1var ContentItemFileProps = function (parent, contextId, object, settings) { 2 var commons = new ContentCommon(); 3 var res = commons.Resources; 4 var objectId = object.Id; 5 var canCreate = object.canCreate; 6 var canDelete = object.canDelete; 7 var isAdmin = object.isAdmin; 8 var contentItemData; 9 var fileCtrlSel = "#upsertFilePropSection"; 10 var saveBtnSel = fileCtrlSel + " .saveFileBtn"; 11 var nameSel = fileCtrlSel + " .txtFileName"; 12 var descSel = fileCtrlSel + " #txtFileDescription"; 13 var closeBtnSel = fileCtrlSel + " .closeFileBtn"; 14 var title = res["Edit"]; 15 var displayModalWindow; 16 var blnchange = false; 17 var maxSize = settings.maxSize; 18 var exts = settings.allowedExts; 19 var btnAddRevision = $("#btnAddRevision"); 20 var btnUpload = fileCtrlSel + " #btnUpload"; 21 var currentRevId; 22 var _revisioncurrentPage = 0; 23 var _revisionpagesize = 3; 24 var revisionnoofpagebuttons = 3; 25 var revisionPagerSelector = fileCtrlSel + " #liRevision .PO-paging"; 26 27 28 formchange = false; 29 var clearForm = function () { 30 $(nameSel).val(""); 31 $('label[for="' + $(nameSel).attr("id") + '"] span.valMsg').show(); 32 $(descSel).val(""); 33 }; 34 35 var setDataInForm = function () { 36 if (objectId > 0) { 37 $.when(contentItemData.GetFileDetail(objectId)).then(function (result) { 38 var resp = result.d; 39 if (resp.RequestStatus != null && resp.RequestStatus.RequestError) { 40 commons.ShowErrorMessage(resp.RequestStatus.RequestErrorMessage); 41 } else { 42 resp = result.d.DataObject; 43 $(nameSel).val(resp.Name); 44 $('label[for="' + $(nameSel).attr("id") + '"] span.valMsg').hide(); 45 //$(nameSel).next("span").hide(); 46 $(descSel).val(resp.Description); 47 $(fileCtrlSel + " .CMS_modal-fileTypeIcon").empty(); 48 $(fileCtrlSel + " .CMS_modal-fileTypeIcon").append(commons.GetImageIconAsPerFile(resp.Extension, "content_item", 4)); 49 $(fileCtrlSel + " .sizeValue").empty(); 50 $(fileCtrlSel + " .sizeValue").html(resp.FileSizeString); 51 $(fileCtrlSel + " .authorValue").empty(); 52 $(fileCtrlSel + " .authorValue").html(resp.CreationUser); 53 $(fileCtrlSel + " .modifiedDate").empty(); 54 $(fileCtrlSel + " .modifiedDate").html(resp.ModifiedDateString); 55 $("#txtDragDrop").val(""); 56 btnAddRevision.val(""); 57 currentRevId = resp.LiveRevisionId; 58 //updateRevisionList(resp); 59 _revisioncurrentPage = 0; 60 appendPagerAndData_revision($(fileCtrlSel + " #fieldsetRevision"), resp.Revisions); 61 if (parent.Access.CanWrite) { 62 updateMetadata(resp); 63 } 64 $(nameSel).focus(); 65 //if (parent.Access.IsAdmin) { 66 // setActivity(); 67 //} 68 } 69 }); 70 } 71 }; 72 73 function bytesToMb(bytes, i) { 74 var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; 75 //if (bytes == 0) return '0 Byte'; 76 //var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024))); 77 //Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i] 78 if (bytes == 0) return '0'; 79 return Math.round(bytes / Math.pow(1024, i), 2); 80 }; 81 var commentedCode = function () {} 82 83 //Paging 84 //Append Paging and data row 85 var _lastPageRevision; 86 var appendPagerAndData_revision = function (ctrl, data) { 87 SpinnerAlert.show(); 88 var pagerCtrl = $(revisionPagerSelector); 89 _lastPageRevision = Math.ceil(data.length / _revisionpagesize); 90 if (_revisioncurrentPage >= _lastPageRevision && _lastPageRevision - 1 >= 0) { 91 _revisioncurrentPage = _lastPageRevision - 1; 92 } 93 updateRevisionList(ctrl, _revisioncurrentPage, data, _revisionpagesize); 94 95 removePager_revision(pagerCtrl); 96 if (data.length > _revisionpagesize) { 97 pagerCtrl.find("ul.PO-pageButton").append(addPageButton_revision(_revisioncurrentPage, _lastPageRevision)); 98 updateButton_revision((revisionnoofpagebuttons * Math.floor(_revisioncurrentPage / revisionnoofpagebuttons)) + 1, _lastPageRevision); 99 showPageStatus_revision(_revisioncurrentPage, data, _revisionpagesize); 100 //showCurrentPage_revision();
101 $(revisionPagerSelector + " li a.pageButton").off("click"); 102 $(revisionPagerSelector + " li a.pageButton").on("click", function (e) { 103 e.preventDefault(); 104 var tag = $(this).attr("tag"); 105 if (tag === "-1") { 106 _revisioncurrentPage -= 1; 107 } else if (tag === "+1") { 108 if (_revisioncurrentPage < _lastPageRevision - 1) 109 _revisioncurrentPage += 1; 110 } else { 111 _revisioncurrentPage = parseInt($(this).attr("tag")); 112 $(this).focus(); 113 } 114 if (_revisioncurrentPage < 0) _revisioncurrentPage = 0; 115 116 117 updateRevisionList(ctrl, _revisioncurrentPage, data, _revisionpagesize); 118 updateButton_revision((revisionnoofpagebuttons * Math.floor(_revisioncurrentPage / revisionnoofpagebuttons)) + 1, _lastPageRevision); 119 //showCurrentPage_revision(); 120 }); 121 $(revisionPagerSelector + " a.nextPrev").off("click"); 122 $(revisionPagerSelector + " a.nextPrev").on("click", function (e) { 123 e.preventDefault(); 124 var id = $(this).attr("id"); 125 //console.log("... clicked .. " + $(this).attr("tag")); 126 var startPage = parseInt($(this).attr("tag")); 127 128 if (id === "next") 129 startPage += (revisionnoofpagebuttons); 130 else if (id === "prev") 131 startPage -= (revisionnoofpagebuttons); 132 if (startPage <= 0) startPage = 1; 133 //showCurrentPage_revision(); 134 updateButton_revision(startPage, _lastPageRevision); 135 136 }); 137 } 138 SpinnerAlert.hide(); 139 }; 140 var addPageButton_revision = function (startPage, lastPage) { 141 if (startPage <= 0) startPage = 0; 142 var pagebutton = ""; 143 pagebutton += "<li><a href='#' class=\"pageButton\" tag=\"-1\" title=\"" + res["PrevPage"] + "\"><em class=\"fa fa-arrow-left\"></em></a></li>"; 144 pagebutton += "<li><a href='#' class=\"nextPrev\" tag=\"" + (startPage + 1) + "\" id=\"prev\" title=\"" + res["PrevPages"] + "\" >...</a></li>"; 145 for (var i = 0; i <= revisionnoofpagebuttons - 1; i++) { 146 if (i > lastPage) continue; 147 else { 148 pagebutton += "<li><a href='#' class=\"pageButton number\" tag=\"" + i + "\" title=\"" + (i + 1) + res["Page"] + "\">" + (i + 1) + " </a></li>"; 149 } 150 } 151 pagebutton += "<li><a href='#' class=\"nextPrev\" tag=\"" + (startPage + 1) + "\" id=\"next\" title=\"" + res["NextPage"] + "\" >...</a></li>"; 152 pagebutton += "<li><a href='#' class=\"pageButton\" tag=\"+1\" title=\"" + res["NextPages"] + "\"><em class=\"fa fa-arrow-right\"></em></a></li>"; 153 return pagebutton; 154 }; 155 //Show search result status 156 var showPageStatus_revision = function (iPage, data, pagesize) { 157 if (data.length > pagesize) 158 $(revisionPagerSelector + " .PO-pageCount").html(res["PageStatus"].format((iPage + 1), Math.ceil(data.length / pagesize))); 159 else 160 $(revisionPagerSelector + " .PO-pageCount").text(""); 161 }; 162 //Show current page 163 var showCurrentPage_revision = function () { 164 $(revisionPagerSelector + " .pageButton").each(function () { 165 var incrementButton = $(this).attr("tag").indexOf("+") < 0 && $(this).attr("tag").indexOf("-") < 0; 166 if (parseInt($(this).attr("tag")) === _revisioncurrentPage && incrementButton) { 167 $(this).addClass("active"); 168 //console.log($(this).attr("tag")); 169 } else 170 $(this).removeClass("active"); 171 }); 172 $(revisionPagerSelector + " .nextPrev").each(function () { 173 $(this).removeClass("active"); 174 }); 175 }; 176 var updateButton_revision = function (startPage, lastPage) { 177 var i = startPage; 178 $(revisionPagerSelector + " a.number").each(function () { 179 if (i <= lastPage) { 180 $(this).show(); 181 var tag = $(this).attr("tag"); 182 $(this).attr("tag", i - 1); 183 $(this).attr("title", i + res["Page"]); 184 $(this).html(i); 185 } else { 186 $(this).hide(); 187 } 188 i += 1; 189 }); 190 $(revisionPagerSelector + " a.nextPrev").attr("tag", startPage); 191 if (startPage <= 1) { 192 $(revisionPagerSelector + " li").first().hide(); 193 $(revisionPagerSelector + " li").first().next().hide(); 194 } else { 195 $(revisionPagerSelector + " li").first().show(); 196 $(revisionPagerSelector + " li").first().next().show(); 197 } 198 if (i > lastPage) { 199 $(revisionPagerSelector + " li").last().hide(); 200 $(revisionPagerSelector + " li").last().prev().hide(); 201 } else { 202 $(revisionPagerSelector + " li").last().show(); 203 $(revisionPagerSelector + " li").last().prev().show(); 204 } 205 }; 206 //Remove Pager control 207 var removePager_revision = function (ctrl) { 208 ctrl.find("ul.PO-pageButton li").remove(); 209 }; 210 211 var multipleSupport = typeof $('<input/>')[0].multiple !== 'undefined'; 212 //$(fileCtrlSel + " input[type=file]").customFile(); 213 214 //Tabs
215 $(".CMS_modal-tabButtons li").click(function (e) { 216 e.preventDefault(); 217 if (!$(this).hasClass("active")) { 218 //var tabNum = $(this).index(); 219 var tabNum = $(this).attr("data-index"); 220 var nthChild = parseInt(tabNum) + 1; 221 $(fileCtrlSel + " .CMS_modal-tabButtons li.active").first().removeClass("active"); 222 $(this).addClass("active"); 223 $(fileCtrlSel + " .CMS_modal-tabs li.tab").removeClass("active"); 224 $(fileCtrlSel + " .CMS_modal-tabs li.tab:nth-child(" + nthChild + ")").first().addClass("active"); 225 } 226 }); 227 228 $(fileCtrlSel + " #btnAddRevision").off("change"); 229 $(fileCtrlSel + " #btnAddRevision").on("change", function (e) { 230 e.preventDefault(); 231 $(btnUpload).trigger("click"); 232 }); 233 var updateMetadata = function (data) { 234 $("#fieldsetMetadataSimple").empty(); 235 $("#fieldsetMetadataSimple").append(data.Metadata); 236 //$("#fieldsetMetadataSimple select").selectBoxIt(); 237 238 $("#fieldsetMetadataSimple input[data-type=date]").mask("9999-99-99", { 239 placeholder: "yyyy-mm-dd" 240 }); 241 $("#fieldsetMetadataSimple input[data-type=date]").datepicker({ 242 dateFormat: 'yy-mm-dd' 243 }); 244 $("#fieldsetMetadataSimple input[data-type=timestamp]").mask("99:99", { 245 placeholder: "hh:mm" 246 }); 247 $("#fieldsetMetadataSimple input[data-type=date_and_time]").mask("9999-99-99 99:99", { 248 placeholder: "yyyy-mm-dd hh:mm" 249 }); 250 $("#fieldsetMetadataSimple input[data-type=time_of_day]").mask("99:99", { 251 placeholder: "hh:mm" 252 }); 253 254 $(fileCtrlSel + " .numeric").on('input', function (event) { 255 this.value = this.value.replace(/[^0-9]/g, ''); 256 }); 257 $(fileCtrlSel + " .numeric").on('blur', function (event) { 258 //var min = $(this).attr("min"); 259 //var max = $(this).attr("max"); 260 //if (min != undefined && $(this).val() < min) 261 // $(this).val() = min; 262 //else if (max != undefined && $(this).val() > max) 263 // $(this).val() = max; 264 }); 265 autoComplete(); 266 }; 267 268 function autoComplete() { 269 $.when(contentItemData.GetUsers()).then(function (result) { 270 var resp = result.d; 271 if (resp.RequestStatus != null && resp.RequestStatus.RequestError) { 272 commons.ShowErrorMessage(resp.RequestStatus.RequestErrorMessage); 273 } else { 274 resp = result.d.DataObject; 275 var suggestions = []; 276 $.each(resp, function (i, val) { 277 suggestions.push({ 278 label: val.name, 279 value: val.name, 280 id: val.id, 281 }); 282 }); 283 $("#fieldsetMetadataSimple input[data-type=user]").autocomplete({ 284 minLength: 2, 285 source: suggestions, 286 select: function (e, ui) { 287 //alert(ui.item.value); 288 $(this).removeAttr("value-id"); 289 $(this).attr("value-id", ui.item.id); 290 //alert($(this).attr("value-id")); 291 } 292 }); 293 } 294 }); 295 }; 296 var updateRevisionList = function (ctrl, iPage, data, pagesize) { 297 SpinnerAlert.show(); 298 var objParams = jQuery.parseJSON(parent.Params); 299 var revisionList = $(fileCtrlSel + " tbody.ulRevisionList"); 300 var endCount = ((iPage * pagesize) + pagesize) - 1; 301 if (data.length < endCount) { 302 endCount = data.length; 303 } 304 revisionList.empty(); 305 var trCtrl = "<tr data-id=\"{{RevisionId}}\">" + 306 "<td scope=\"row\" title=\"{{Title}}\">{{Title}}</td>" + 307 "<td >{{FileSizeString}}</td>" + 308 "<td >{{CreationUser}}</td>" + 309 "<td >{{ModifiedDateString}}</td>" + 310 "<td >{{Version}}</td>" + 311 "<td >{{actions}}</td>" + 312 "</tr>"; 313 var delCtrl = "<a href=\"\" class=\"delRevision CMS_modal
313-actionButton delete\" title=\"Delete revision\" >" + res["Delete"] + "</a>"; 314 var makeLiveCtrl = "<a class=\"makeLive CMS_modal-actionButton active\" href=\"\" title=\"Make Live revision\" >" + res["MakeLive"] + "</a>"; 315 $.each(data, function (index, value) { 316 if (index >= iPage * pagesize && index <= endCount) { 317 var fileName = value.Title + "." + value.Extension; 318 var dataTr = trCtrl.replace("{{Title}}", fileName).replace("{{Title}}", fileName.length > 15 ? fileName.substring(0, 15) + "..." : fileName).replace("{{RevisionId}}", value.LiveRevisionId).replace("{{FileSizeString}}", value.FileSizeString).replace("{{ModifiedDateString}}", value.ModifiedDateString).replace("{{CreationUser}}", value.CreationUser).replace("{{Version}}", value.Version); 319 320 if (currentRevId != value.LiveRevisionId) { 321 if (value.isAdmin && value.isAdmin == true) 322 dataTr = dataTr.replace("{{actions}}", makeLiveCtrl + delCtrl); 323 else if ((value.canDelete && value.canDelete == true) || objParams["id"] == value.CreationUserId) { 324 dataTr = dataTr.replace("{{actions}}", delCtrl); 325 } else { 326 dataTr = dataTr.replace("{{actions}}", ""); 327 } 328 } else { 329 dataTr = dataTr.replace("{{actions}}", res["LiveVersion"]); 330 } 331 revisionList.append(dataTr); 332 } 333 }); 334 showPageStatus_revision(iPage, data, pagesize); 335 336 $(fileCtrlSel + " a.makeLive").off("click"); 337 $(fileCtrlSel + " a.makeLive").on("click", function (e) { 338 e.stopPropagation(); 339 e.preventDefault(); 340 var parentLi = $(this).closest("tr"); 341 var dataId = parseInt(parentLi.attr("data-id")); 342 if (objectId > 0 && dataId > 0) { 343 $.when(contentItemData.MakeLive(dataId, objectId, contextId)).then(function (result) { 344 var resp = result.d; 345 if (resp.RequestStatus != null && resp.RequestStatus.RequestError) { 346 commons.ShowErrorMessage("Invalid operation!"); 347 } else { 348 commons.ShowCreateMessage("File is live version now."); 349 initialise(); 350 blnchange = true; 351 } 352 }); 353 } 354 }); 355 356 $(fileCtrlSel + " a.delRevision").off("click"); 357 $(fileCtrlSel + " a.delRevision").on("click", function (e) { 358 e.stopPropagation(); 359 e.preventDefault(); 360 var parentLi = $(this).closest("tr"); 361 var dataId = parseInt(parentLi.attr("data-id")); 362 var revName = parentLi.find("td").first().attr("title"); 363 swal({ 364 title: "Are you sure", 365 text: 'You want to delete revision "' + revName + '" ?', 366 type: "warning", 367 showCancelButton: true, 368 confirmButtonColor: "#DD6B55", 369 confirmButtonText: "Yes, delete it!", 370 closeOnConfirm: true 371 }).then(function (isConfirm) { 372 if (isConfirm) { 373 if (objectId > 0 && dataId > 0) { 374 $.when(contentItemData.DeleteRevision(dataId, objectId, contextId)).then(function (result) { 375 var resp = result.d; 376 if (resp.RequestStatus != null && resp.RequestStatus.RequestError) { 377 commons.ShowErrorMessage("Invalid operation!"); 378 } else { 379 commons.ShowDeleteMessage("File revision \"" + revName + "\" is deleted successfully."); 380 initialise(); 381 } 382 }); 383 } 384 } 385 }).catch(function () {}); 386 }); 387 SpinnerAlert.hide(); 388 }; 389 var convertSize = function (size) { 390 var sizeKB = size / 1024; 391 if (parseInt(sizeKB) > 1024) { 392 var sizeMB = sizeKB / 1024; 393 sizeStr = sizeMB.toFixed(2) + " MB"; 394 } else { 395 sizeStr = sizeKB.toFixed(2) + " KB"; 396 } 397 return sizeStr; 398 }; 399 var fileUploadObject; 400 //Initialisation of an object 401 var initialise = function () { 402 var parentWidth = $(".PO-wrapper").width(); 403 if (!(object.canCreate && object.canCreate == "true")) { 404 $(fileCtrlSel + " div#customfileupload").remove(); 405 } 406 //if (!parent.Access.IsAdmin) {
407 $(fileCtrlSel + " .CMS_modal-tabButtons li.activity").remove(); 408 $(fileCtrlSel + " .CMS_modal-tabs li.activity").remove(); 409 //} 410 411 contentItemData = new ContentItemData(contextId); 412 displayModalWindow = new ContentItemModalWindow(contextId); 413 commons.ShowBreadCrumbs(parent, fileCtrlSel); 414 if (objectId > 0) { 415 title = res["Edit"]; 416 $(saveBtnSel).val(res["Update"] + " " + res["file"].Propercase()); 417 if (parentWidth >= 525) { 418 displayModalWindow.openModalWindow(fileCtrlSel, "updateFileSection", title, 750, 750, null, true, true, parent, this); 419 } else { 420 displayModalWindow.openModalWindow(fileCtrlSel, "updateFileSection", title, parentWidth, 750, null, true, true, parent, this); 421 } 422 423 commons.displayModalWindow = displayModalWindow; 424 if (objectId > 0) { 425 setDataInForm(); 426 } else { 427 clearForm(); 428 } 429 } 430 return false; 431 }; 432 433 434 var saveMetadata = function () { 435 var attrInputs = $("#fieldsetMetadataSimple input"); 436 var metadataAttr = []; 437 $("#fieldsetMetadataSimple input").each(function () { 438 var dataId = $(this).attr("data-id").toString(); 439 var dataType = $(this).attr("data-type"); 440 var dataVal; 441 switch (dataType) { 442 case "user": 443 dataVal = $(this).attr("value-id"); 444 break; 445 case "time_of_day": 446 if ($(this).val() != "") 447 dataVal = $(this).val().trim(); 448 else 449 dataVal = "00:00"; 450 break; 451 case "date": 452 case "date_and_time": 453 //dataVal = $(this).datepicker("yy-mm-dd").val(); 454 if ($(this).val() != "") 455 dataVal = $(this).val().trim(); 456 else 457 dataVal = ""; 458 break; 459 case "string": 460 case "number": 461 case "url": 462 case "timestamp": 463 default: 464 dataVal = $(this).val().trim(); 465 break; 466 } 467 metadataAttr.push(dataId + ":::" + dataVal); 468 }); 469 $("#fieldsetMetadataSimple textarea").each(function () { 470 var dataId = $(this).attr("data-id").toString(); 471 var dataType = $(this).attr("data-type"); 472 var dataVal; 473 switch (dataType) { 474 case "multiline_string": 475 case "memo": 476 case "html_memo": 477 case "richtext": 478 case "content": 479 default: 480 dataVal = $(this).val().trim(); 481 break; 482 } 483 metadataAttr.push(dataId + ":::" + dataVal); 484 }); 485 return metadataAttr; 486 487 } 488 489 if (object.canCreate && object.canCreate == "true") { 490 var sendFileToServer = function (formData, status) { 491 SpinnerAlert.show(); 492 var uploadURL = "/Common/controls/multipleFileUpload/plupload/fileUploadHandler"; //Upload URL 493 var extraData = {}; //Extra Data. 494 var jqXHR = $.ajax({ 495 xhr: function () { 496 var xhrobj = $.ajaxSettings.xhr(); 497 if (xhrobj.upload) { 498 xhrobj.upload.addEventListener('progress', function (event) { 499 var percent = 0; 500 var position = event.loaded || event.position; 501 var total = event.total; 502 if (event.lengthComputable) { 503 percent = Math.ceil(position / total * 100); 504 } 505 //status.setProgress(percent); 506 }, false); 507 } 508 return xhrobj; 509 }, 510 url: uploadURL, 511 type: "POST", 512 contentType: false, 513 processData: false, 514 cache: false, 515 data: formData, 516 success: function (data) { 517 SpinnerAlert.hide(); 518 btnAddRevision.val(""); 519 //status.setProgress(100); 520 $("#status1").empty(); 521 $("#status1").attr("style", "color:#27ae60;"); 522 var fileName = ""; 523 try { 524 fileName = " [" + formData.get("file").name + "]"; 525 } catch (exInn) {; 526 } 527 $("#status1").append(res["RevisionAddded"] + "{0}".format(fileName)); 528 commons.ShowCreateMessage(res["RevisionAddded"] + "{0}".format(fileName)); 529 initialise(); 530 blnchange = true; 531 }, 532 error: function (xhr, ajaxOptions, thrownError) { 533 SpinnerAlert.hide(); 534 if (xhr.responseJSON) { 535 $("#status1").empty(); 536 $("#status1").removeAttr("style"); 537 $("#status1").append(xhr.responseJSON.message); 538 } 539 }, 540 541 }); 542 543 //status.setAbort(jqXHR); 544 }; 545 var ieFormData = function ieFormData() { 546 if (window.FormData == undefined) { 547 this.processData = true; 548 this.contentType = 'application/x-www-form-urlencoded'; 549 this.append = function (name, value) { 550 this[name] = value == undefined ? "" : value; 551 return true; 552 } 553 } else { 554 var formdata = new FormData(); 555 formdata.processData = false; 556 formdata.contentType = false; 557 return formdata; 558 } 559 }; 560 var rowCount = 0; 561 var createStatusbar = function (obj) { 562 rowCount++; 563 this.statusbar = $("<div class='statusbar'></div>"); 564 obj.before(this.statusbar); 565 }; 566 var handleFileUpload = function (files, obj) { 567 var i = 0; 568 var fd = ieFormData(); 569 if (files[i] != undefined) { 570 fd.append('file', files[i]); 571 fd.append("objectType", "content_item"); 572 fd.append("parentId", contextId); 573 fd.append("isrevision", true); 574 fd.append("objectid", objectId); 575 if (multipleSupport && files[i] && files[i].size <= 0) { 576 $("#status1").empty(); 577 $("#status1").removeAttr("style"); 578 $("#status1").append("The file '" + files[i].name + "' is invali
578d. (" + files[i].name + " has no data)"); 579 } else { 580 var status = new createStatusbar(obj); //Using this we can set progress. 581 sendFileToServer(fd, status); 582 } 583 } 584 }; 585 var dragandrophandler = $(fileCtrlSel + " #dragandrophandler"); 586 var txtDragDrophandler = $(fileCtrlSel + " #txtDragDrop"); 587 dragandrophandler.off('dragenter'); 588 dragandrophandler.on('dragenter', function (e) { 589 e.stopPropagation(); 590 e.preventDefault(); 591 $(this).css('border', '2px solid #0B85A1'); 592 }); 593 dragandrophandler.off('dragover'); 594 dragandrophandler.on('dragover', function (e) { 595 e.stopPropagation(); 596 e.preventDefault(); 597 }); 598 dragandrophandler.off('drop'); 599 dragandrophandler.on('drop', function (e) { 600 $(this).css('border', '2px dotted #0B85A1'); 601 e.preventDefault(); 602 var files = e.originalEvent.dataTransfer.files; 603 if (files != undefined && files.length > 0) { 604 $("#txtDragDrop").val(files[0].name + ' (' + plupload.formatSize(files[0].size) + ')'); 605 //We need to send dropped files to Server 606 handleFileUpload(files, dragandrophandler); 607 } else { 608 commons.ShowErrorMessage(res["DragDropError"]); 609 } 610 }); 611 612 $(document).off('dragenter'); 613 $(document).on('dragenter', function (e) { 614 e.stopPropagation(); 615 e.preventDefault(); 616 }); 617 $(document).off('dragover'); 618 $(document).on('dragover', function (e) { 619 620 e.stopPropagation(); 621 e.preventDefault(); 622 if (dragandrophandler) 623 dragandrophandler.css('border', '2px dotted #0B85A1'); 624 }); 625 $(document).off('drop'); 626 $(document).on('drop', function (e) { 627 e.stopPropagation(); 628 e.preventDefault(); 629 }); 630 631 var imageSizes = { 632 thumbnail: { 633 width: 400, 634 height: 400 635 }, //The thumbail images in the updated photo gallery portlet. 636 medium: { 637 width: 1000, 638 height: 800 639 }, //This size is not used in the updated photo gallery portlet. 640 large: { 641 width: 1000, 642 height: 800 643 } //The slideshow and lightbox images for updated photo gallery portlet. 644 } 645 var filters = [{ 646 title: "Custom Filter", 647 extensions: exts 648 }]; 649 var uploader = new plupload.Uploader({ 650 runtimes: 'html5,flash,silverlight,html4', 651 browse_button: "btnAddFile", // you can pass in id... 652 container: document.getElementById("dragandrophandler"), // ... or DOM Element itself 653 max_file_size: bytesToMb(maxSize * 1024, 2) + "mb", 654 chunk_size: 0, 655 min_file_size: "1kb", 656 multi_selection: false, 657 unique_names: false, 658 // Specify what files to browse for 659 filters: filters, 660 send_file_name: true, 661 url: "/Common/controls/multipleFileUpload/plupload/fileUploadHandler", 662 max_file_count: 1, 663 flash_swf_url: '/Common/resources/shared/controls/plupload/Moxie.swf', 664 silverlight_xap_url: '/Common/resources/shared/controls/plUpload/Moxie.xap', 665 multipart_params: { 666 "parentId": contextId, 667 "objectType": "content_item", 668 "isrevision": true, 669 "objectid": objectId 670 }, 671 init: { 672 PostInit: function () { 673 $("#status1").innerHTML = ''; 674 }, 675 BeforeUpload: function (up, file) { 676 file.originalName = file.name; 677 file.name = getTimestamp() + "_" + file.name; //Chunked (large) images use the file.name property; small images do not, and have to have name made unique on server side. 678 }, 679 FilesAdded: function (up, files) { 680 SpinnerAlert.show(); 681 plupload.each(files, function (file) { 682 if (multipleSupport && file && file.size <= 0) { 683 $("#status1").empty(); 684 $("#status1").removeAttr("style"); 685 $("#status1").append("The file '" + file._orgName + "' is invali
685d. (" + file.originalName + " has no data)"); 686 } else { 687 $("#txtDragDrop").val(file.originalName + ' (' + plupload.formatSize(file.size) + ')'); 688 uploader.start(); 689 } 690 }); 691 692 }, 693 FileUploaded: function (up, file, response) { 694 SpinnerAlert.hide(); 695 btnAddRevision.val(""); 696 $("#status1").empty(); 697 $("#status1").attr("style", "color:#27ae60;"); 698 $("#status1").append(res["RevisionAddded"] + " [" + file.originalName + "]"); 699 commons.ShowCreateMessage(res["RevisionAddded"] + " [" + file.originalName + "]"); 700 initialise(); 701 blnchange = true; 702 }, 703 Error: function (up, err) { 704 SpinnerAlert.hide(); 705 var erObj = jQuery.parseJSON(err.response); 706 $("#status1").empty(); 707 $("#status1").removeAttr("style"); 708 if (erObj || err.code == -601 || err.code == -600) { 709 if (err.code == -601) 710 $("#status1").append("The file '" + ((err && err.file) ? err.file.originalName : "") + "' has a file extension which is not permitted."); 711 else 712 $("#status1").append(erObj.message); 713 } else $("#status1").append(err.message); 714 return false; 715 } 716 } 717 }); 718 719 720 uploader.init(); 721 } 722 723 724 725 //Validations for required controls 726 $(fileCtrlSel + " .required").off('blur'); 727 $(fileCtrlSel + " .required").on('blur', function () { 728 var $thisLabel = $('label[for="' + $(this).attr("id") + '"] span.valMsg'); 729 if ($(this).val() == null || $(this).val().trim().length <= 0) { 730 $thisLabel.show(); 731 return false; 732 } else { 733 $thisLabel.hide(); 734 formchange = true; 735 } 736 }); 737 $(fileCtrlSel + " .required").off('change'); 738 $(fileCtrlSel + " .required").on('change', function () { 739 var $thisLabel = $('label[for="' + $(this).attr("id") + '"] span.valMsg'); 740 formchange = true; 741 if ($(this).val().trim().length > 0) 742 $thisLabel.hide(); 743 }); 744 $(fileCtrlSel + " .required").off('keydown'); 745 $(fileCtrlSel + " .required").on('keydown', function () { 746 var $thisLabel = $('label[for="' + $(this).attr("id") + '"] span.valMsg'); 747 if ($(this).val().trim().length > 0) 748 $thisLabel.hide(); 749 }); 750 //$(nameSel + "," + descSel).off("keyup"); 751 //$(nameSel + "," + descSel).on("keyup", function (event) { 752 // if (event.keyCode == 13) { 753 // $(saveBtnSel).trigger("click"); 754 // } 755 //}); 756 //Save button event 757 $(saveBtnSel).off("click"); 758 $(saveBtnSel).on("click", function (e) { 759 e.preventDefault(); 760 var metadataAttr = saveMetadata(); 761 var fileObject = { 762 "Name": $(nameSel).val().trim(), 763 "Description": $(descSel).val().trim(), 764 "ParentId": contextId, 765 "ObjectId": objectId, 766 "Metadata": metadataAttr 767 }; 768 if (objectId <= 0) { 769 commons.ShowErrorMessage(res["Invalid"]); 770 } else if (fileObject.Name.trim().length <= 0) { 771 //commons.ShowValidationMessage(res["EmptyValidation"].format(res["Name"])); 772 $(nameSel).focus(); 773 $('label[for="' + $(nameSel).attr("id") + '"] span.valMsg').show(); 774 } else if (fileObject.Name.trim().length > 0) { 775 $.when(contentItemData.UpsertFile(fileObject)).then(function (result) { 776 var resp = result.d; 777 if (resp.RequestStatus != null && resp.RequestStatus.RequestError) { 778 commons.ShowErrorMessage(resp.RequestStatus.RequestErrorMessage); 779 } else { 780 commons.ShowUpdateMessage(res["updated"].format(fileObject.Name, res["file"])); 781 if (displayModalWindow) { 782 displayModalWindow.closeModalWindow(); 783 } 784 parent.initialise(); 785 } 786 }); 787 } 788 return false; 789 });
790 791 792 //Close button event 793 $(closeBtnSel).off("click"); 794 $(closeBtnSel).on("click", function (e) { 795 e.preventDefault(); 796 //$("#fieldsetMetadataSimple input[data-type=user]").autocomplete("destroy"); 797 displayModalWindow.closeModalWindow(); 798 purge(this); 799 if (blnchange) 800 parent.initialise(); 801 return false; 802 }); 803 804 var distroy = function () { 805 if (uploader != undefined) 806 uploader.destroy(); 807 purge(this); 808 }; 809 810 var purge = function purge(obj) { 811 var att = obj.attributes, 812 ind, len, nam; 813 if (att) { 814 for (ind = att.length - 1; ind >= 0; ind -= 1) { 815 nam = att[ind].name; 816 if (typeof obj[nam] === 'function') { 817 obj[nam] = null; 818 } 819 } 820 } 821 att = obj.childNodes; 822 if (att) { 823 len = att.length; 824 for (ind = 0; ind < len; ind += 1) { 825 purge(obj.childNodes[ind]); 826 } 827 } 828 } 829 830 //Delete File 831 var deleteFile = function (fileName) { 832 swal({ 833 title: "Are you sure", 834 text: 'You want to delete file "' + fileName + '" ?', 835 type: "warning", 836 showCancelButton: true, 837 confirmButtonColor: "#DD6B55", 838 confirmButtonText: "Yes, delete it!", 839 closeOnConfirm: true 840 }).then(function (isConfirm) { 841 if (isConfirm) { 842 contentItemData = new ContentItemData(contextId); 843 if (objectId > 0) { 844 $.when(contentItemData.DeleteFile(objectId)).then(function (result) { 845 var resp = result.d; 846 if (resp.RequestStatus != null && resp.RequestStatus.RequestError) { 847 commons.ShowErrorMessage("Invalid operation!"); 848 } else { 849 commons.ShowDeleteMessage('"' + fileName + '" file has been deleted.') 850 parent.initialise(); 851 } 852 }); 853 } 854 } 855 }).catch(function () {}); 856 857 return false; 858 }; 859 860 var getTimestamp = function () { 861 var d = new Date(); 862 var theYear = String(d.getFullYear()); 863 var theMonth = String(d.getMonth() + 1); 864 var theDay = String(d.getDate()); 865 var theHour = String(d.getHours()); 866 var theMin = String(d.getMinutes()); 867 var theSec = String(d.getSeconds()); 868 var theMS = String(d.getMilliseconds()); 869 870 theMonth = zeroPad(theMonth); 871 theDay = zeroPad(theDay); 872 theHour = zeroPad(theHour); 873 theMin = zeroPad(theMin); 874 theSec = zeroPad(theSec); 875 876 return theYear + theMonth + theDay + theHour + theMin + theSec + theMS; 877 }; 878 879 var zeroPad = function (text) { 880 if (text.length == 1) { 881 return "0" + text 882 }; 883 return text; 884 } 885 886 return { 887 initialise: initialise, 888 DeleteFile: deleteFile, 889 Distroy: distroy 890 } 891};
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.