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.