PageSourceSearch

https://www.penargylschooldistrict.org/Common/controls/ContentItemModern/scripts/ContentItemFile.js

js penargylschooldistrict.org collected 2026-09-29 22:28:42 UTC 11,943 bytes, 295 lines download raw bytes

1var ContentItemFile = function (parent, contextId, object, settings) {
2
3    var objectId = object.Id;
4    var contentItemData;
5    var fileCtrlSel = "#updateFileSection";
6    var saveBtnSel = ".saveFileBtn";
7    var nameSel = ".txtFileName";
8    var descSel = ".txtFileDescription";
9    var closeBtnSel = ".closeFileBtn";
10    var title = "Add File";
11    var displayModalWindow;
12    var uploader = $("#dvMultipleUploader");
13    var commons = new ContentCommon();
14    var res = commons.Resources;
15    var maxSize = settings.maxSize;
16    var exts = settings.allowedExts;
17    var updateFile = res["Update"] + " " + res["file"].Propercase();
18    var clearForm = function () {
19        $(nameSel).val("");
20        $(nameSel).next(".valMsg").show();
21        $(descSel).val("");
22    };
23    var parentWidth = $(".PO-wrapper").width();
24    var exts = settings.allowedExts;
25    var setDataInForm = function () {
26        if (objectId > 0) {
27            $.when(contentItemData.GetFileDetail(objectId)).then(function (result) {
28                var resp = result.d;
29                if (resp.RequestStatus != null && resp.RequestStatus.RequestError) {
30                    commons.ShowErrorMessage(resp.RequestStatus.RequestErrorMessage);
31                    displayModalWindow.closeModalWindow();
32                    return false;
33                } else {
34                    resp = result.d.DataObject;
35                    $(nameSel).val(resp.Name);
36                    $(nameSel).next("span").hide();
37                    $(descSel).val(resp.Description);
38                    //$(saveBtnSel).val(updateFile);
39                }
40            });
41        }
42    };
43    var fileUploadObject;
44    //Initialisation of an object
45    var initialise = function () {
46        contentItemData = new ContentItemData(contextId);
47        displayModalWindow = new ContentItemModalWindow(contextId);
48        commons.ShowBreadCrumbs(parent, fileCtrlSel);
49        if (objectId > 0) {
50            title = updateFile;
51            $(saveBtnSel).text(updateFile);
52            $(saveBtnSel).removeAttr("title");
53            $(saveBtnSel).attr("title", updateFile);
54            displayModalWindow.openModalWindow(fileCtrlSel, "updateFileSection", objectId > 0 ? updateFile : title, 600, 470, null, true, true);
55
56            if (objectId > 0) {
57                setDataInForm();
58            } else {
59                clearForm();
60            }
61            $(nameSel).focus();
62        } else {
63            var currentO = this;
64            $.when(contentItemData.GetUploadResource()).then(function (result) {
65                var resp = result.d;
66                if (resp.RequestStatus != null && resp.RequestStatus.RequestError) {
67                    commons.ShowErrorMessage(resp.RequestStatus.RequestErrorMessage);
68                    displayModalWindow.closeModalWindow();
69                } else {
70                    resp = result.d.DataObject;
71                    openMultitpleUploader(resp);
72                    currentO.fileUploadObject = fileUploadObject;
73                    currentO.uploader = uploader;
74                    if (parentWidth >= 525) {
75                        displayModalWindow.openModalWindow("#ciMultipleUploader", "ciMultipleUploader", title, 700, 500, null, true, true, parent, currentO);
76                    } else {
77                        displayModalWindow.openModalWindow("#ciMultipleUploader", "ciMultipleUploader", title, parentWidth, 500, null, true, true, parent, currentO);
78                    }
79                }
80            });
81
82
83        }
84
85        return false;
86    };
87    var multipleSupport = typeof $('<input/>')[0].multiple !== 'undefined';
88
89    function bytesToMb(bytes, i) {
90        var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
91        //if (bytes == 0) return '0 Byte';
92        //var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
93        //Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i]
94        if (bytes == 0) return '0';
95        return Math.round(bytes / Math.pow(1024, i), 2);
96    };
97
98    var openMultitpleUploader = function (data) {
99        var imageSizes = {
100            thumbnail: {
101                width: 400,
102                height: 400
103            }, //The thumbail images in the updated photo gallery portlet.
104            medium: {
105                width: 1000,
106                height: 800
107            }, //This size is not used in the updated photo gallery portlet.
108            large: {
109                width: 1000,
110                height: 800
111            } //The slideshow and lightbox images for updated photo gallery portlet.
112        }
113
114        uploader = $("<div id='dvMultipleUploader'></div>");
115        $(fileCtrlSel + " #ciMultipleUploader").append(uploader);
116        uploader = $("#dvMultipleUploader");
117        var filters = [{
118            title: "Custom Filter",
119            extensions: exts
120        }];
121        var _localiseControls = new localiseControls(uploader.parent(), data)
122        var contextObject = {
123            "filters": "",
124            "mxupload": "10",
125            "parent": parent,
126            "parentWindow": displayModalWindow,
127            "parentElement": uploader.parent(),
128            "objectType": "content_item",
129            "url": "/Common/controls/multipleFileUpload/plupload/fileUploadHandler",
130            "startUploadButtonID": "btnStartUpload",
131            "stopUploadButtonID": "btnStopUpload",
132            "parentId": contextId,
133            "maxFileSizeMB": bytesToMb(maxSize * 1024, 2),
134            "maxNumberFilesUploaded": 50,
135            "acceptedFileExtensions": filters,
136            "headerTitle": "",
137            "headerText": _localiseControls.getText("UploadFilesIntro") + 10 + " mb. ",
138            "mainBodyText": multipleSupport ? _localiseControls.getText("UploadFilesDragHere") : _localiseControls.getText("ClickAddFiles"),
139            "addFilesButtonText": _localiseControls.getText("AddFilesBtn"),
140            "startUploadButtonText": _localiseControls.getText("StartUploadBtn"),
141            "stopUploadButtonText": _localiseControls.getText("StopUploadBtn"),
142            "closeButtonText": _localiseControls.getText("CloseBtn"),
143            "resizeWidth": imageSizes.large.width * 1.5,
144            "resizeHeight": imageSizes.large.height * 1.5,
145            "refreshParent": true,
146        };
147        var maxMb = Math.ceil(1024000 / 1024);
148        if (maxSize * 1024 < 1048576000)
149            maxMb = Math.ceil(maxSize / 1024);
150        uploader.attr("x-parentid", contextId);
151        uploader.attr("x-type", "content_item");
152        uploader.attr("x-filters", exts);
153        uploader.attr("x-maxupload", maxMb);
154        fileUploadObject = new fileUploadMaster($("#dvMultipleUploader"), contextObject, data);
155        fileUploadObject.initialiseControl();
156    };
157
158    var distroyUploader = function () {
159        if (fileUploadObject) {
160            fileUploadObject.destroy();
161            uploader.remove();
162        } else {
163            purge(this);
164        }
165    }
166
167    //Validations for required controls
168    $(fileCtrlSel + " .required").off('blur');
169    $(fileCtrlSel + " .required").on('blur', function () {
170        if ($(this).val() == null || $(this).val() == '') {
171            $(this).next(".valMsg").show();
172            $(this).next(".valMsg").html(res["Required"]);
173            return false;
174        } else {
175            $(this).next(".valMsg").hide();
176        }
177    });
178    $(fileCtrlSel + " .required").off('change');
179    $(fileCtrlSel + " .required").on('change', function () {
180        if ($(this).val() != '')
181            $(this).next(".valMsg").hide();
182    });
183    $(fileCtrlSel + " .required").off('keydown');
184    $(fileCtrlSel + " .required").on('keydown', function () {
185        if ($(this).val() != '')
186            $(this).next(".valMsg").hide();
187    });
188
189    //Save button event
190    $(saveBtnSel).off("click");
191    $(saveBtnSel).on("click", function (e) {
192        e.preventDefault();
193        var fileObject = {
194            "Name": $(nameSel).val(),
195            "Description": $(descSel).val(),
196            "ParentId": contextId,
197            "ObjectId": objectId
198        };
199        if (objectId <= 0) {
200            commons.ShowErrorMessage(res["Invalid"]);
201        } else if (fileObject.Name == '') {
202            $(nameSel).next(".valMsg").show();
203            //$(nameSel).next(".valMsg").html(res["EmptyValidation"].format(res["Name"]));
204            $(nameSel).next(".valMsg").html(res["Required"]);
205            $(nameSel).focus();
206        } else if (fileObject.Name != '') {
207            $.when(contentItemData.UpsertFile(fileObject)).then(function (result) {
208                var resp = result.d;
209                if (resp.RequestStatus != null && resp.RequestStatus.RequestError) {
210                    commons.ShowErrorMessage(resp.RequestStatus.RequestErrorMessage);
211                } else {
212                    commons.ShowUpdateMessage(res["updated"].format(fileObject.Name, res["file"]));
213                    displayModalWindow.closeModalWindow();
214                    parent.initialise();
215                }
216            });
217        }
218        return false;
219    });
220
221    //Close button event
222    $(closeBtnSel).off("click");
223    $(closeBtnSel).on("click", function (e) {
224        e.preventDefault();
225        displayModalWindow.closeModalWindow();
226        purge(this);
227    });
228
229    var purge = function purge(obj) {
230        var att = obj.attributes,
231            ind, len, nam;
232        if (att) {
233            for (ind = att.length - 1; ind >= 0; ind -= 1) {
234                nam = att[ind].name;
235                if (typeof obj[nam] === 'function') {
236                    obj[nam] = null;
237                }
238            }
239        }
240        att = obj.childNodes;
241        if (att) {
242            len = att.length;
243            for (ind = 0; ind < l; ind += 1) {
244                purge(obj.childNodes[ind]);
245            }
246        }
247    }
248
249
250    //Delete File
251    var deleteFile = function (fileName) {
252        swal({
253            title: res["DeleteSure"],
254            text: res["DeleteCommon"].format(res["file"], fileName),
255            type: "warning",
256            showCancelButton: true,
257            confirmButtonColor: "#DD6B55",
258            confirmButtonText: res["DeleteYes"],
259            cancelButtonText: res["CancelX"],
260            closeOnConfirm: true
261        }).then(function (isConfirm) {
262            if (isConfirm) {
263                contentItemData = new ContentItemData(contextId);
264                if (objectId > 0) {
265                    $.when(contentItemData.DeleteFile(objectId)).then(function (result) {
266                        var resp = result.d;
267                        if (resp.RequestStatus != null && resp.RequestStatus.RequestError) {
268                            commons.ShowErrorMessage("Invalid operation!");
269                        } else {
270                            swal({
271                                title: res["file"],
272                                text: res["deleted"].format(fileName, res["file"]),
273                                type: "success",
274                                showConfirmButton: true,
275                                allowEscapeKey: true,
276                                onClose: () => {
277                                    parent.initialise();
278                                    parent.ShowListfocus();
279                                }
280                            }).catch(function () { });
281                        };
282                    });
283                }
284            }
285        }).catch (function () { });
286        return false;
287    };
288
289    return {
290        initialise: initialise,
291        DeleteFile: deleteFile,
292        uploader: uploader,
293        Distroy: distroyUploader
294    }
295};

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.