https://www.evergreen.k12.oh.us/Common/controls/ContentItemModern/scripts/ContentItemListUIModule.js
1// Polyfill for URLSearchParams for IE11 - see PRES-6579 2var URLSearchParams = window.URLSearchParams || function (searchString) { 3 var self = this; 4 self.searchString = searchString; 5 self.get = function (name) { 6 var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(self.searchString); 7 if (results === null) { 8 return null; 9 } 10 else { 11 return decodeURI(results[1]) || 0; 12 } 13 }; 14}; 15 16 17function onResizeDocContainer() { 18 $('.PO-wrapper').each(function () { 19 var portletWidth = $(this).width(); 20 if (portletWidth < 525) { 21 $(this).addClass('PO-mobileView'); 22 } 23 else { 24 $(this).removeClass('PO-mobileView'); 25 } 26 }); 27} 28 29$(window).resize(function () { 30 onResizeDocContainer(); 31}); 32 33var ContentItemListUI = function (contextId, historyObject, subFolders, params, selectMultiSwitch, selectedItems) { 34 var mainContainer = "#PO-documentContainer";//mainCtrl; //"#PO-documentContainer"; 35 var loadingContainer = "#PO-documentContainer-loading"; 36 var obj = typeof params === 'string' ? JSON.parse(params) : params; 37 var _params = JSON.stringify(obj); 38 var ctlSuffixId = "_" + obj["Extension"]; 39 var ctlClientId = obj["ClientId"] + "_"; 40 mainContainer = mainContainer + ctlSuffixId; 41 loadingContainer = loadingContainer + ctlSuffixId; 42 var currentO; 43 var listSelector = $(mainContainer + " .documentList"); 44 var _historyObject = historyObject; 45 var _back = []; 46 var _history = []; 47 var _contextId = contextId; 48 49 var _currentPage = 0; 50 var _pagesize = 10; 51 var noofpagebuttons = 3; 52 var _lastPage = 0; 53 var pagerSelector = mainContainer + " .PO-paging"; 54 55 var _data; 56 var _settings; 57 var _permit; 58 var _searchVal = ""; 59 var _sortcriteria = ""; 60 var _root; 61 var _activeItem = (historyObject) ? historyObject.ActiveItem : 0; 62 var _activeObject = (historyObject) ? historyObject.ActiveItem : undefined; 63 var _rootObject; 64 var commons = new ContentCommon(); 65 var res = commons.Resources; 66 var timerId; 67 var contentItemData; 68 var _sortby = ""; 69 var _sortasc = true; 70 71 var headerSelector = mainContainer + " .documentListTitle .displayTable"; 72 var columns = [{ "data": "Name", "title": res["file"].Propercase() + " " + res["Name"], "sort": true, "visible": true, "arialabel": "File Name" }, 73 { "data": "CreationUser", "title": res["User"].Propercase(), "sort": true, "visible": true, "arialabel": "User" }, 74 { "data": "FileSize", "title": res["Size"].Propercase(), "sort": true, "visible": true, "arialabel": "file size" }, 75 { "data": "ModifiedDateString", "title": res["Modified"].Propercase(), "sort": true, "visible": true, "arialabel": "last modified date" }, 76 ]; 77 var secLink = mainContainer + " #secuirtyLink" + ctlSuffixId; 78 var actLink = mainContainer + " #activityLink" + ctlSuffixId; 79 var hideUserField = false; 80 var hideModifiedDateField = false; 81 var hideSizeField = false; 82 var showDispSettings = false; 83 84 var showSubscription = obj["ShowSubscription"]; 85 86 var hideDescription = obj["HideDescription"]; 87 88 var showDescrip = function (isHideDescription) { 89 var divDescript = $(mainContainer + " .PO-description"); 90 if (isHideDescription || divDescript.text().length === 0) { 91 divDescript.hide(); 92 } else { 93 divDescript.show(); 94 } 95 }; 96 97 function setHidDescription(isHide) { 98 hideDescription = isHide; 99 } 100 101 function setDescription(description) { 102 var divDescript = $(mainContainer + " .PO-description"); 103 divDescript.innerHTML = description; 104 } 105 106 function showLoadingScreen() { 107 $(loadingContainer).show(); 108 $(mainContainer).hide(); 109 } 110 111 function hideLoadingScreen() { 112 const params = new URLSearchParams(window.location.search); 113 if (params.get("showLoadingScreen") !== "true") { 114 $(loadingContainer).hide(); 115 $(mainContainer).show(); 116 } 117 } 118 119 //Show breadcrums 120 var showBreadCrumbs = function () { 121 var breadcrumbSel = mainContainer + " .PO-breadcrumb"; 122 $(breadcrumbSel).empty(); 123 for (var i = 0; i <= _back.length - 1; i++) { 124 var breadcrumbLink = document.createElement("a"); 125 breadcrumbLink.href = "#"; 126 breadcrumbLink.className = "crumButton"; 127 breadcrumbLink.title = res["FolderTooltip"] + "'" + _back[i].Name + "'"; 128 breadcrumbLink.setAttribute("parent-id", _back[i].objectId); 129 breadcrumbLink.setAttribute("data-id", _back[i].objectId); 130 breadcrumbLink.setAttribute("tag", i); 131 breadcrumbLink.textContent = _back[i].Name; 132 $(breadcrumbSel).append(breadcrumbLink); 133 if (_back.length > 0) 134 $(breadcrumbSel).append(" <span class=\"fa fa-chevron-right\"> </span>"); 135 } 136 137 if (_back.length > 0) { 138 $(mainContainer + " .PO-navigationBar").show(); 139 if (_rootObject !== null) { 140 var breadcrumbSpan = document.createElement("span"); 141 breadcrumbSpan.textContent = _rootObject.Name; 142 $(breadcrumbSel).append(breadcrumbSpan); 143 144 } 145 } else { 146 $(mainContainer + " .PO-navigationBar").hide(); 147 } 148 var crumButtonSel = mainContainer + " .crumButton"; 149 $(crumButtonSel).off(); 150 $(crumButtonSel).on("click", function (e) { 151 e.preventDefault(); 152 var tag = parseInt($(this).attr("tag")); 153 var dataid = parseInt($(this).attr("data-id")); 154 var dataid = parseInt($(this).attr("parent-id")); 155 var hObject = _history[tag]; 156 157 _back = jQuery.grep(_back, 158 function (value, index) { 159 return index < tag; 160 }); 161 162 _history = jQuery.grep(_history, 163 function (value, index) { 164 return index < tag; 165 }); 166 var childItemListUi; 167 if (hObject && hObject.historyObject) { 168 hObject.historyObject.Back = _back; 169 hObject.historyObject.History = _history;
170 hObject.historyObject.Params = _params; 171 childItemListUi = new ContentItemListUI(dataid, hObject.historyObject, null, _params, selectMultiSwitch, selectedItems); 172 } 173 else { 174 childItemListUi = new ContentItemListUI(dataid, null, null, _params, selectMultiSwitch, selectedItems); 175 } 176 177 childItemListUi.initialise(hObject); 178 179 e.preventDefault(); 180 }); 181 }; 182 183 var addSubFolderRow = function (ctrl) { 184 185 if (_back !== undefined && _back.length > 0) { 186 ctrl.find("li.subfolder").remove(); 187 var index = _back.length - 1; 188 if (index >= 0 && _root !== null && _root !== undefined) { 189 var backFolderName = ""; 190 if (_back.length > 0) { 191 backFolderName = _back[_back.length - 1].Name; 192 } 193 var backLinktitle = res["ClickBack"] + "'" + backFolderName + "'"; 194 var dataRow = document.createElement("li"); 195 dataRow.className = "subfolder open openfolderback"; 196 dataRow.setAttribute("parent-id", _root.ParentId); 197 dataRow.setAttribute("title", backLinktitle); 198 199 var link = document.createElement("a"); 200 link.href = "#"; 201 link.setAttribute("data-write", _root.canWrite); 202 203 var displayTable = document.createElement("div"); 204 displayTable.className = "displayTable"; 205 206 var iconType = document.createElement("div"); 207 iconType.className = "iconType"; 208 var iconItem = document.createElement("div"); 209 iconItem.className = "item"; 210 var icon = document.createElement("em"); 211 icon.className = "fa fa-folder-open"; 212 iconItem.appendChild(icon); 213 iconType.appendChild(iconItem); 214 215 var titleUser = document.createElement("div"); 216 titleUser.className = "titleUser"; 217 var docTitle = document.createElement("div"); 218 docTitle.className = "item docTitle"; 219 docTitle.textContent = _root.Name; 220 titleUser.appendChild(docTitle); 221 222 var sizeTime = document.createElement("div"); 223 sizeTime.className = "sizeTime"; 224 var docSize = document.createElement("div"); 225 docSize.className = "item docSize"; 226 docSize.textContent = _data.length + " Item(s)"; 227 sizeTime.appendChild(docSize); 228 229 displayTable.appendChild(iconType); 230 displayTable.appendChild(titleUser); 231 displayTable.appendChild(sizeTime); 232 link.appendChild(displayTable); 233 dataRow.appendChild(link); 234 235 ctrl.prepend(dataRow); 236 237 var liopenfolderback = mainContainer + " li.openfolderback"; 238 239 $(liopenfolderback).off("click"); 240 $(liopenfolderback).on("click", function (e) { 241 e.preventDefault(); 242 var dataid = parseInt($(this).attr("parent-id")); 243 var hsto = null; 244 if (_history !== undefined && _history.length > 0) { 245 hsto = _history[_history.length - 1]; 246 } 247 var childItemListUi = new ContentItemListUI(dataid, hsto, null, _params, selectMultiSwitch, selectedItems); 248 _back.pop(); 249 if (_history !== undefined && _history.length > 0) 250 _history.pop(); 251 $.when(childItemListUi.initialise(hsto)).then(function () { 252 showCurrentItem(); 253 }); 254 }); 255 } 256 } 257 else { 258 ctrl.find(mainContainer + " li.folder").remove(); 259 } 260 }; 261 262 //setup history of controls from history object 263 var setupHistory = function (hstObject) { 264 _currentPage = hstObject.currentPage; 265 _pagesize = hstObject.pagesize; 266 _searchVal = hstObject.searchVal; 267 //_rootObject = hstObject.RootObject; 268 //_back = hstObject.Back; 269 //$(mainContainer + " #pageSize").val(hstObject.pagesize); 270 //$(mainContainer + " #txtSearch").val(hstObject.searchVal); 271 }; 272 273 var reloadDocumentContainerItems = function () { 274 // reload the document container's new items 275 refreshDocumentContainer(); 276 } 277 278 // Initialise control 279 function initialise(hstObject, moveModalClosed) { 280 // if loading after the content item move modal has closed then clear the selected items
281 if (moveModalClosed === true) { 282 selectedItems = []; 283 } 284 285 if (historyObject !== null) { 286 if (historyObject.Back !== null) _back = historyObject.Back; 287 if (historyObject.History !== null) _history = historyObject.History; 288 } 289 290 if (!contentItemData) { 291 contentItemData = new ContentItemData(_contextId); 292 } 293 294 //init portlet subscription before items adding 295 if (showSubscription) { 296 var subscriptionLink = $(mainContainer + " a.subscriptionrootitem"); 297 subscriptionLink.attr('title', res["SubscriptionLinkTitle"]); 298 subscriptionLink.html('<em class="fa fa-bell"></em>' + res["Subscribe"]); 299 subscriptionLink.attr('data-name', res["Subscribe"]); 300 subscriptionLink.attr('data-id', _contextId); 301 subscriptionLink.off("click"); 302 subscriptionLink.on("click", function (e) { 303 e.preventDefault(); 304 _activeObject = $(this); 305 var type = $(this).attr("data-item"); 306 var name = $(this).attr("data-name"); 307 var id = $(this).attr("data-id"); 308 _activeItem = id; 309 displaySubscriptionModal(_contextId, { "Id": id, "Name": name }); 310 }); 311 } 312 313 // Set loading spinner "Loading..." text 314 $(loadingContainer + " #loadingText" + ctlSuffixId).html(res["Loading"]); 315 $(loadingContainer + " #loadingSpinnerTitleId" + ctlSuffixId).html(res["DocumentsLoading"]); 316 317 showDescrip(hideDescription); 318 319 bindEvents(); 320 321 if (_historyObject !== null) { 322 } 323 else { 324 //$(mainContainer + " .PO-backButton").attr("style", "display:none"); 325 $(document).contentItemListUI = this; 326 } 327 if (hstObject) setupHistory(hstObject); 328 329 refreshDocumentContainer(); 330 331 currentO = this; 332 } 333 334 var refreshDocumentContainer = function () { 335 336 showLoadingScreen(); 337 338 $.when(contentItemData.GetFolderDetailWithParents(_contextId, _params, false)).then(function (results) { 339 var resp = results.d; 340 if (resp.RequestStatus !== null && resp.RequestStatus.RequestError) { 341 commons.ShowErrorMessage(res["RequestError"]); 342 } 343 else { 344 try { 345 _root = results.d.DataObject; 346 _rootObject = results.d.DataObject; 347 _back = results.d.AncestryList; 348 showBreadCrumbs(); 349 _searchVal = $(mainContainer + " #txtSearch" + ctlSuffixId).val().trim(); 350 obj.searchVal = _searchVal; 351 352 // Get addDelay param from querystyring, and add to search params (used to trigger delay on loading doc container, for testing loading spinner) 353 var href = window.location.href; 354 if (href.indexOf('?') > -1) { 355 var queryString = href.substring(href.indexOf('?'), href.length); 356 var addDelay = getParameterByName("addDelay", queryString); 357 if (addDelay === "true") { obj.addDelay = true; } 358 } 359 360 var _searchParams = JSON.stringify(obj); 361 362 $.when(contentItemData.GetItemList(_contextId, _searchParams)).then(function (results) { 363 var resp = results.d; 364 if (resp.RequestStatus !== null && resp.RequestStatus.RequestError) { 365 commons.ShowErrorMessage(res["RequestError"] + "! " + resp.RequestStatus.RequestErrorMessage); 366 } 367 else { 368 try { 369 _settings = results.d.Settings; 370 371 hideUserField = _settings.Settings !== undefined && _settings.Settings.HideUserField; 372 hideModifiedDateField = _settings.Settings !== undefined && _settings.Settings.HideLastModifiedField; 373 hideSizeField = _settings.Settings !== undefined && _settings.Settings.HideSizeField; 374 showDispSettings = _settings.Settings !== undefined && _settings.Settings.ShowOnEachContainer; 375 _permit = results.d.UserPermit; 376 updateToolBar(); 377 contentItemData.Data = results.d.DataObject; 378 _data = contentItemData.Data; 379 addSubFolderRow(listSelector); 380 appendHeader(); 381 switch (_settings.Settings.SortBy) { 382 case "Name": 383 _sortby = "Name"; 384 break; 385 case "User": 386 _sortby = "CreationUser"; 387 break; 388 case "Modified": 389 _sortby = "ModifiedDateString"; 390 break; 391 case "Size": 392 _sortby = "FileSize"; 393 break; 394 } 395 _sortasc = _settings.Settings.SortAsc; 396 updateHeader($("div.sortcolumn[data='" + _sortby + "']"), _settings.Settings.SortAsc ? "asc" : "desc"); 397 sortDataList(_sortby, _sortasc); 398 } catch (e) { 399 commons.ShowErrorDetails(e); 400 } 401 //$(".processingStatus").html("done...." + _
401contextId); 402 } 403 }).done(function () { 404 hideLoadingScreen(); 405 onResizeDocContainer(); 406 }); 407 } catch (e) { 408 hideLoadingScreen(); 409 commons.ShowErrorDetails(e); 410 } 411 } 412 }); 413 }; 414 415 function getParameterByName(name, queryString) { 416 name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); 417 var regexS = "[\\?&]" + name + "=([^&#]*)"; 418 var regex = new RegExp(regexS); 419 var results = regex.exec(queryString); 420 if (results === null) 421 return ""; 422 else 423 return decodeURIComponent(results[1].replace(/\\+/g, " ")); 424 }; 425 426 //Set default data in paging and search while navigating folders 427 var clearControls = function () { 428 //$(mainContainer + " #pageSize").val(10); 429 $(mainContainer + " #txtSearch" + ctlSuffixId).val(""); 430 }; 431 432 433 //Remove Pager control 434 var removePager = function (ctrl) { 435 ctrl.find("ul.PO-pageButton li").remove(); 436 }; 437 438 var getCurrentObject = function () { 439 //_currentO.Data = _data; 440 currentO.currentPage = _currentPage; 441 currentO.pagesize = _pagesize; 442 currentO.searchVal = _searchVal; 443 currentO.RootObject = _rootObject; 444 currentO.Params = _params; 445 currentO.Back = _back; 446 currentO.Container = mainContainer; 447 currentO.ActiveItem = _activeItem; 448 currentO.ActiveObject = _activeObject; 449 currentO.Access = _permit; 450 return currentO; 451 }; 452 453 //search value in control 454 var searchValue = function (arrEle) { 455 var searchVal = $(mainContainer + " #txtSearch" + ctlSuffixId).val(); 456 return arrEle.Name.toLowerCase().indexOf(searchVal.toLowerCase()) >= 0 || 457 (!arrEle.CreationUser ? "" : arrEle.CreationUser).toLowerCase().indexOf(searchVal.toLowerCase()) >= 0; 458 }; 459 460 function GetItemsByParentId(items, ParentId) { 461 var _filteritems = function (item) { 462 return item.ParentId === ParentId; 463 }; 464 return items.filter(_filteritems); 465 } 466 467 //Search data filter 468 var searchContentData = function () { 469 _searchVal = $(mainContainer + " #txtSearch" + ctlSuffixId).val().trim(); 470 obj.searchVal = _searchVal; 471 var _searchParams = JSON.stringify(obj); 472 _currentPage = 0; 473 removePager(listSelector); 474 try { 475 showLoadingScreen(); 476 $.when(contentItemData.GetItemList(_contextId, _searchParams)).then(function (results) { 477 var resp = results.d; 478 if (resp.RequestStatus !== null && resp.RequestStatus.RequestError) { 479 commons.ShowErrorMessage(res["RequestError"] + "! " + resp.RequestStatus.RequestErrorMessage); 480 } 481 else { 482 try { 483 _data = contentItemData.Data = results.d.DataObject; 484 displayContentData(_data); 485 } catch (e) { 486 commons.ShowErrorDetails(e); 487 } 488 } 489 }).done(function () { 490 hideLoadingScreen(); 491 }); 492 } catch (e) { 493 hideLoadingScreen(); 494 commons.ShowErrorDetails(e); 495 } 496 497 //displayContentData(_data); 498 }; 499 500 var tempResLink = "/Common/resources/shared/controls"; 501 //Modal Folder (used for confirmation dialogs): 502 var displayUpsertFolderModal = function (cId, folderObject) { 503 var templateUrl = obj["csFolder.html"]; 504 var contentItemData = new ContentItemData(_contextId); 505 $.when(contentItemData.GetTemplate(templateUrl)).then(function (data, textStatus, XMLHttpRequest) { 506 data = localiseFolder(data); 507 AppendTemplateInModal(data); 508 if (data.length > 0) { 509 var contentItemFolder = new ContentItemFolder(getCurrentObject(), cId, folderObject); 510 contentItemFolder.initialise(); 511 } 512 return false; 513 }); 514 } 515 function localiseFolder(dataStr) { 516 dataStr = dataStr.replace(/\{{Name}}/g, res["Name"]); 517 dataStr = dataStr.replace(/\{{Add}}/g, res["Add"]); 518 dataStr = dataStr.replace(/\{{Update}}/g, res["Update"]); 519 dataStr = dataStr.replace(/\{{Required}}/g, res["Required"]); 520 dataStr = dataStr.replace(/\{{Description}}/g, res["Description"]); 521 dataStr = dataStr.replace(/\{{folder}}/g, res["folder"].Propercase()); 522 dataStr = dataStr.replace(/\{{CancelX}}/g, res["CancelX"]);
523 return dataStr; 524 }; 525 526 //Modal File 527 var displayUpsertFileModal = function (cId, fileObject) { 528 var templateUrl = obj["csFile.html"]; 529 var contentItemData = new ContentItemData(_contextId); 530 $.when(contentItemData.GetTemplate(templateUrl)).then(function (data, textStatus, XMLHttpRequest) { 531 data = localiseFile(data); 532 AppendTemplateInModal(data); 533 if (data.length > 0) { 534 var contentItemfile = new ContentItemFile(getCurrentObject(), cId, fileObject, { "maxSize": _settings.Settings.MaximumSize, "allowedExts": _settings.AllowedExts }); 535 contentItemfile.initialise(); 536 } 537 return false; 538 }); 539 } 540 541 var displayUploader = function () { 542 var pl = { 543 i18n_uploader: res["Uploader"], 544 i18n_add_files: res["Add_Files"], 545 i18n_start_upload: res["Start_Upload"], 546 i18n_cancel_upload: res["Cancel_Upload"], 547 i18n_name: res["File_Name"], 548 i18n_file_size: res["File_Size"], 549 i18n_remove_button: res["File_Remove_Button"], 550 i18n_uploader_maximum_error: res["Maximum_Error"], 551 i18n_invalid_file_type_error: res["Invalid_File_Type_Error"], 552 i18n_maximum_file_size_error: res["Maximum_File_Size_Error"], 553 i18n_file_upload_successful: res["File_Upload_Successful"], 554 i18n_x_of_y_successfully_uploaded: res["X_of_Y_successfully_uploaded"], 555 i18n_cancel_upload_title: res["Cancel_Upload_Title"], 556 i18n_are_you_sure_you_want_to_cancel: res["Are_You_Sure_You_Want_To_Cancel_Upload"], 557 i18n_yes: res["general_yes"], 558 i18n_no: res["general_no"], 559 maxFileSize: _settings.Settings.IsExist ? (_settings.Settings.MaximumSize * 1024) : (_settings.DefaultMaximumSize * 1024), 560 maxFileSizeFormatMB: false, 561 maxNumberOfFiles: 50, // hard coded in the system - not configurable 562 acceptedFileTypes: _settings.AllowedExts, 563 objectType: "content_item", 564 parentId: _contextId, 565 url: '../../../../Src/Classes/Uploader/FileUploaderHandler', 566 reloadDocumentContainerItems: reloadDocumentContainerItems // pass a function through so we can reload the doc container with new items 567 }; 568 569 presence.loadModalPopup('objUploader', '/common/Modals/Uploader/Uploader.htm', '', pl); 570 } 571 572 function localiseFile(dataStr) { 573 dataStr = dataStr.replace(/\{{Name}}/g, res["Name"]); 574 dataStr = dataStr.replace(/\{{Add}}/g, res["Add"]); 575 dataStr = dataStr.replace(/\{{Update}}/g, res["Update"]); 576 dataStr = dataStr.replace(/\{{Required}}/g, res["Required"]); 577 dataStr = dataStr.replace(/\{{Description}}/g, res["Description"]); 578 dataStr = dataStr.replace(/\{{file}}/g, res["file"].Propercase()); 579 dataStr = dataStr.replace(/\{{CancelX}}/g, res["CancelX"]); 580 return dataStr; 581 }; 582 //Modal Link 583 var displayUpsertLinkModal = function (cId, linkObject) { 584 var templateUrl = obj["csLink.html"]; 585 var contentItemData = new ContentItemData(_contextId); 586 $.when(contentItemData.GetTemplate(templateUrl)).then(function (data, textStatus, XMLHttpRequest) { 587 data = localiseLink(data); 588 AppendTemplateInModal(data); 589 if (data.length > 0) { 590 var contentItemLink = new ContentItemLink(getCurrentObject(), cId, linkObject); 591 contentItemLink.initialise(); 592 } 593 return false; 594 }); 595 } 596 function localiseLink(dataStr) { 597 dataStr = dataStr.replace(/\{{Name}}/g, res["Name"]); 598 dataStr = dataStr.replace(/\{{Add}}/g, res["Add"]); 599 dataStr = dataStr.replace(/\{{Update}}/g, res["Update"]); 600 dataStr = dataStr.replace(/\{{Required}}/g, res["Required"]); 601 dataStr = dataStr.replace(/\{{Description}}/g, res["Description"]); 602 dataStr = dataStr.replace(/\{{link}}/g, res["link"].Propercase()); 603 dataStr = dataStr.replace(/\{{Url}}/g, res["Url"]); 604 dataStr = dataStr.replace(/\{{Favorite}}/g, res["Favorite"]); 605 dataStr = dataStr.replace(/\{{CancelX}}/g, res["CancelX"]);
606 return dataStr; 607 }; 608 609 function escapeHtml(unsafe) { 610 return unsafe 611 .replace(/&/g, "&") 612 .replace(/</g, "<") 613 .replace(/>/g, ">") 614 .replace(/"/g, """) 615 .replace(/'/g, "'"); 616 } 617 618 // Move Multiple Modal 619 var displayMoveModalMultiple = function (cId, itemObject) { 620 var templateUrl = obj["csMove.html"]; 621 var contentItemData = new ContentItemData(_contextId); 622 $.when(contentItemData.GetTemplate(templateUrl)).then(function (data, textStatus, XMLHttpRequest) { 623 data = localiseMove(data).replace("{{ObjectName}}", res["AllSelectedItems"]); 624 AppendTemplateInModal(data); 625 if (data.length > 0) { 626 var rootFolderId = cId; 627 var contentItemMove = new ContentItemMove(getCurrentObject(), rootFolderId, itemObject, null, selectedItems); 628 contentItemMove.initialise(); 629 } 630 return false; 631 }); 632 }; 633 634 //Modal Move 635 var displayMoveModal = function (cId, itemObject) { 636 var templateUrl = obj["csMove.html"]; 637 var contentItemData = new ContentItemData(_contextId); 638 $.when(contentItemData.GetTemplate(templateUrl)).then(function (data, textStatus, XMLHttpRequest) { 639 data = localiseMove(data).replace("{{ObjectName}}", escapeHtml(itemObject.Name)); 640 641 AppendTemplateInModal(data); 642 if (data.length > 0) { 643 var rootFolderId = cId; 644 var contentItemMove = new ContentItemMove(getCurrentObject(), rootFolderId, itemObject); 645 contentItemMove.initialise(); 646 } 647 return false; 648 }); 649 }; 650 function localiseMove(dataStr) { 651 dataStr = dataStr.replace(/\{{MoveNote}}/g, res["MoveNote"]); 652 dataStr = dataStr.replace(/\{{CancelX}}/g, res["CancelX"]); 653 return dataStr; 654 }; 655 //Modal display settings 656 var displaySettingsModal = function (cId) { 657 var templateUrl = obj["csDisplaySettings.html"]; 658 var contentItemData = new ContentItemData(_contextId); 659 $.when(contentItemData.GetTemplate(templateUrl)).then(function (data, textStatus, XMLHttpRequest) { 660 data = localiseSettings(data); 661 AppendTemplateInModal(data); 662 if (data.length > 0) { 663 var contentItemSettings = new ContentDispSettingsModule(getCurrentObject(), cId); 664 contentItemSettings.Initialise(); 665 } 666 return false; 667 }); 668 } 669 670 var displayMultipleSelect = function (contextId) { 671 672 selectMultiSwitch = !selectMultiSwitch; 673 var docList = $(mainContainer + " .documentList"); 674 var checkBoxes = docList.find(" .CMS_checkbox"); 675 676 if (selectMultiSwitch === false) { 677 // hide multi options (move to & delete buttons) 678 $(mainContainer + " .multiMoveOption").hide(); 679 680 // reset the checked items 681 selectedItems = []; 682 // uncheck the items 683 checkBoxes.each(function () { 684 var checkboxNode = this.childNodes[0]; 685 checkboxNode.setAttribute("aria-hidden", "true"); 686 checkboxNode.checked = false; 687 }); 688 689 // hide the checkboxes 690 docList.removeClass("DL-multiMove"); 691 // remove background colour from Select Multi button so it no longer appears selected 692 $(mainContainer + " #MultiMoveLink").css({ 693 "background-color": "", 694 "box-shadow": "", 695 "border-radius": "" 696 }); 697 } 698 else { 699 // show the checkboxes 700 docList.addClass("DL-multiMove"); 701 702 checkBoxes.each(function () { 703 var checkboxNode = this.childNodes[0]; 704 checkboxNode.setAttribute("aria-hidden", "false"); 705 }); 706 707 // show Move To... and Delete buttons 708 $(mainContainer + " .multiMoveOption").show(); 709 // set background colour of Select Multiple button so it shows it has been selected
710 $(mainContainer + " #MultiMoveLink").css({ 711 "background-color": "#ffffff", 712 "box-shadow": "0 0 1px rgba(0,0,0,0.5)", 713 "border-radius": "4px" 714 }); 715 } 716 } 717 718 function localiseSettings(dataStr) { 719 dataStr = dataStr.replace(/\{{HideTheLastModifiedField}}/g, res["HideTheLastModifiedField"]); 720 dataStr = dataStr.replace(/\{{HideTheUserField}}/g, res["HideTheUserField"]); 721 dataStr = dataStr.replace(/\{{HideTheSizeField}}/g, res["HideTheSizeField"]); 722 dataStr = dataStr.replace(/\{{SortBy}}/g, res["SortBy"]); 723 dataStr = dataStr.replace(/\{{Name}}/g, res["Name"]); 724 dataStr = dataStr.replace(/\{{Modified}}/g, res["Modified"]); 725 dataStr = dataStr.replace(/\{{Size}}/g, res["Size"]); 726 dataStr = dataStr.replace(/\{{Ascending}}/g, res["Ascending"]); 727 dataStr = dataStr.replace(/\{{Descending}}/g, res["Descending"]); 728 dataStr = dataStr.replace(/\{{User}}/g, res["User"]); 729 dataStr = dataStr.replace(/\{{SortOrder}}/g, res["SortOrder"].Propercase()); 730 dataStr = dataStr.replace(/\{{MaxUploadSize}}/g, res["MaxUploadSize"]); 731 dataStr = dataStr.replace(/\{{DefaultMaximum}}/g, res["DefaultMaximum"]); 732 dataStr = dataStr.replace(/\{{SetMaximumSizeTo}}/g, res["SetMaximumSizeTo"]); 733 dataStr = dataStr.replace(/\{{UpdateDisplaysettings}}/g, res["UpdateDisplaysettings"]); 734 dataStr = dataStr.replace(/\{{Required}}/g, res["Required"]); 735 dataStr = dataStr.replace(/\{{CancelX}}/g, res["CancelX"]); 736 dataStr = dataStr.replace(/\{{DataFields}}/g, res["DataFields"]); 737 dataStr = dataStr.replace(/\{{SortByField}}/g, res["SortByField"].Propercase()); 738 dataStr = dataStr.replace(/\{{Description}}/g, res["Description"].Propercase()); 739 dataStr = dataStr.replace(/\{{ConvertToPlainText}}/g, res["ConvertToPlainText"]); 740 dataStr = dataStr.replace(/\{{HideDescriptionColumn}}/g, res["HideDescriptionColumn"]); 741 dataStr = dataStr.replace(/\{{WarningMessage}}/g, res["WarningMessage"]); 742 dataStr = dataStr.replace(/\{{Loading}}/g, res["Loading"]); 743 dataStr = dataStr.replace(/\{{DocumentsLoading}}/g, res["DocumentsLoading"]); 744 745 return dataStr; 746 } 747 748 //Modal security 749 var displayFilePropModal = function (cId, fileObject) { 750 var templateUrl = obj["csFileProps.html"]; 751 var contentItemData = new ContentItemData(_contextId); 752 $.when(contentItemData.GetTemplate(templateUrl)).then(function (data, textStatus, XMLHttpRequest) { 753 data = localiseProperty(data); 754 AppendTemplateInModal(data); 755 if (data.length > 0) { 756 var contentItemFileProps = new ContentItemFileProps(getCurrentObject(), cId, fileObject, { "maxSize": _settings.Settings.MaximumSize, "allowedExts": _settings.AllowedExts }); 757 contentItemFileProps.initialise(); 758 } 759 return false; 760 }); 761 } 762 function localiseProperty(dataStr) { 763 dataStr = dataStr.replace(/\{{Name}}/g, res["Name"]); 764 dataStr = dataStr.replace(/\{{Required}}/g, res["Required"]); 765 dataStr = dataStr.replace(/\{{Update}}/g, res["Update"]); 766 dataStr = dataStr.replace(/\{{Size}}/g, res["Size"]); 767 dataStr = dataStr.replace(/\{{Date}}/g, res["Date"]); 768 dataStr = dataStr.replace(/\{{Description}}/g, res["Description"]); 769 dataStr = dataStr.replace(/\{{User}}/g, res["User"]); 770 dataStr = dataStr.replace(/\{{VersionHistory}}/g, res["VersionHistory"]); 771 dataStr = dataStr.replace(/\{{MetaData}}/g, res["MetaData"]); 772 dataStr = dataStr.replace(/\{{AddRevision}}/g, res["AddRevision"]); 773 dataStr = dataStr.replace(/\{{Revision List}}/g, res["RevisionList"]); 774 dataStr = dataStr.replace(/\{{Author}}/g, res["Author"]); 775 dataStr = dataStr.replace(/\{{CreatedOn}}/g, res["CreatedOn"]); 776 dataStr = dataStr.replace(/\{{Version#}}/g, res["Version#"]); 777 dataStr = dataStr.replace(/\{{Action}}/g, res["Action"]); 778 779 dataStr = dataStr.replace(/\{{file}}/g, res["file"].Propercase()); 780 dataStr = dataStr.replace(/\{{CancelX}}/g, res["CancelX"]);
781 dataStr = dataStr.replace(/\{{Activity}}/g, res["Activity"]); 782 dataStr = dataStr.replace(/\{{ActivityList}}/g, res["ActivityList"]); 783 dataStr = dataStr.replace(/\{{Action}}/g, res["Action"]); 784 dataStr = dataStr.replace(/\{{OccuredAt}}/g, res["OccuredAt"]); 785 dataStr = dataStr.replace(/\{{SelectAFile}}/g, res["SelectAFile"]); 786 dataStr = dataStr.replace(/\{{DragDrop}}/g, res["DragDrop"]); 787 return dataStr; 788 }; 789 //Modal security 790 var displaySecurityModal = function (cId) { 791 //var contentItemLink = new ContentItemLink(getCurrentObject(), cId); 792 //contentItemLink.initialise(); 793 } 794 795 //Modal Activity 796 var displayActivityModal = function (cId, name) { 797 var templateUrl = obj["csContentActivity.html"]; 798 var contentItemData = new ContentItemData(_contextId); 799 $.when(contentItemData.GetTemplate(templateUrl)).then(function (data, textStatus, XMLHttpRequest) { 800 data = localiseActivity(data); 801 AppendTemplateInModal(data); 802 if (data.length > 0) { 803 var contentActivity = new ContentActivity(getCurrentObject(), cId, name); 804 contentActivity.initialise(); 805 } 806 return false; 807 }); 808 } 809 function localiseActivity(dataStr) { 810 dataStr = dataStr.replace(/\{{ActivityList}}/g, res["ActivityList"]); 811 dataStr = dataStr.replace(/\{{SubscriptionAlerts}}/g, res["SubscriptionAlerts"]); 812 dataStr = dataStr.replace(/\{{Action}}/g, res["Action"]); 813 dataStr = dataStr.replace(/\{{OccuredAt}}/g, res["OccuredAt"]); 814 dataStr = dataStr.replace(/\{{User}}/g, res["User"]); 815 dataStr = dataStr.replace(/\{{Description}}/g, res["Description"]); 816 dataStr = dataStr.replace(/\{{ActionWidth}}/g, $(".PO-wrapper").width() > 525 ? "width:300px;" : ""); 817 return dataStr; 818 }; 819 820 //Modal Subscription 821 var displaySubscriptionModal = function (cId, ciObject) { 822 var templateUrl = obj["csContentAlert.html"]; 823 var contentItemData = new ContentItemData(_contextId); 824 $.when(contentItemData.GetTemplate(templateUrl)).then(function (data, textStatus, XMLHttpRequest) { 825 data = localiseNotification(data); 826 AppendTemplateInModal(data); 827 if (data.length > 0) { 828 $.widget("ui.dialog", $.ui.dialog, { 829 _allowInteraction: function (event) { 830 //This function fixes issue with IE11 not able to verify Recaptcha v2 831 if (this._super(event)) { 832 return true; 833 } 834 // address interaction issues with general iframes with the dialog 835 if (event.target.ownerDocument !== this.document[0]) { 836 return true; 837 } 838 839 // address interaction issues with iframe based drop downs in IE 840 if ($(event.target).closest("iframe").length) { 841 return true; 842 } 843 } 844 }); 845 var contentAlert = new ContentAlert(getCurrentObject(), cId, ciObject); 846 contentAlert.initialise(); 847 } 848 return false; 849 }); 850 } 851 function localiseNotification(dataStr) { 852 dataStr = dataStr.replace(/\{{Subscription_Title}}/g, res["Subscription_Title"]); 853 dataStr = dataStr.replace(/\{{Subscription_MyAlertOnline}}/g, res["Subscription_MyAlertOnline"]); 854 dataStr = dataStr.replace(/\{{Subscription_EmailAlerts}}/g, res["Subscription_EmailAlerts"]); 855 dataStr = dataStr.replace(/\{{Subscription_EmailAddress}}/g, res["Subscription_EmailAddress"]); 856 dataStr = dataStr.replace(/\{{Subscription_SendImmediately}}/g, res["Subscription_SendImmediately"]); 857 dataStr = dataStr.replace(/\{{Subscription_SendDaily}}/g, res["Subscription_SendDaily"]); 858 dataStr = dataStr.replace(/\{{Subscription_SendWeekly}}/g, res["Subscription_SendWeekly"]);
859 dataStr = dataStr.replace(/\{{Subscription_EmailType}}/g, res["Subscription_EmailType"]); 860 dataStr = dataStr.replace(/\{{Subscription_EmailTypeHtml}}/g, res["Subscription_EmailTypeHtml"]); 861 dataStr = dataStr.replace(/\{{Subscription_EmailTypeText}}/g, res["Subscription_EmailTypeText"]); 862 dataStr = dataStr.replace(/\{{Subscription_AddAlert}}/g, res["Subscription_AddAlert"]); 863 dataStr = dataStr.replace(/\{{Subscription_Frequency}}/g, res["Subscription_Frequency"]); 864 dataStr = dataStr.replace(/\{{SelectFrequency}}/g, res["SelectFrequency"]); 865 dataStr = dataStr.replace(/\{{Required}}/g, res["Required"]); 866 dataStr = dataStr.replace(/\{{CancelX}}/g, res["CancelX"]); 867 return dataStr; 868 }; 869 870 var AppendTemplateInModal = function (template) { 871 if (template !== undefined && template.length > 0) { 872 $(mainContainer + " #cmsModal").empty(); 873 $(mainContainer + " #cmsModal").append(template); 874 //$(mainContainer + " #cmsModal select").selectBoxIt({ autoWidth: false }); 875 } 876 }; 877 878 //bind events 879 var bindEvents = function () { 880 881 clearControls(); 882 883 $(mainContainer + " #btnSearch").off("click"); 884 $(mainContainer + " #btnSearch").on("click", function (e) { 885 e.preventDefault(); 886 searchContainer(); 887 }); 888 889 $(mainContainer + " #linkClear" + ctlSuffixId).off("click"); 890 $(mainContainer + " #linkClear" + ctlSuffixId).on("click", function (e) { 891 $(mainContainer + " #txtSearch" + ctlSuffixId).val(""); 892 e.preventDefault(); 893 searchContainer(); 894 }); 895 896 $(mainContainer + " #txtSearch" + ctlSuffixId).off("keyup"); 897 $(mainContainer + " #txtSearch" + ctlSuffixId).on("keyup", function (e) { 898 if (e.which === 13 && $(mainContainer + " #txtSearch" + ctlSuffixId).is(':focus')) { 899 e.preventDefault(); 900 searchContainer(); 901 } 902 }); 903 } 904 905 function searchContainer() { 906 if (_searchVal !== $(mainContainer + " #txtSearch" + ctlSuffixId).val().trim()) { 907 searchContentData(); 908 } 909 }; 910 911 var updateToolBar = function () { 912 913 // show and hide the multiple move/delete options 914 if (selectMultiSwitch === true) { 915 $(mainContainer + " .multiMoveOption").show(); 916 } 917 else { 918 $(mainContainer + " .multiMoveOption").hide(); 919 } 920 921 if (_permit.CanCreate && !isGuestMode) { 922 $(mainContainer + " div .PO-settingMenuBar").show(); 923 $(mainContainer + " #addFolder" + ctlSuffixId + " a").html("<em class=\"fa fa-folder\"></em> " + res["folder"].Propercase()); 924 $(mainContainer + " #addFolder" + ctlSuffixId + " a").attr("title", res["Add"] + " " + res["folder"].Propercase()); 925 $(mainContainer + " #addFolder" + ctlSuffixId).off(); 926 $(mainContainer + " #addFolder" + ctlSuffixId).on("click", function (e) { 927 e.stopPropagation(); 928 e.preventDefault(); 929 displayUpsertFolderModal(_contextId, { "Id": 0 }); 930 return false; 931 }); 932 933 // HIDING OLD UPLOAD FOR RELEASE... DO NOT REMOVE UNTIL ALL COMPONENTS ARE COMPLETE FOR NEW UPLOADER 934 $(mainContainer + " #" + ctlClientId + "addFiles a").html("<em class=\"fa fa-file\"></em> " + res["file"].Propercase()); 935 $(mainContainer + " #" + ctlClientId + "addFiles a").attr("title", res["Add"] + " " + res["file"].Propercase()); 936 $(mainContainer + " #" + ctlClientId + "addFiles").off(); 937 $(mainContainer + " #" + ctlClientId + "addFiles").on("click", function (e) { 938 e.stopPropagation(); 939 e.preventDefault(); 940 displayUpsertFileModal(_contextId, { "Id": 0 }); 941 return false; 942 }); 943 944 $(mainContainer + " #" + ctlClientId + "addFilesJQuery a").html("<em class=\"fa fa-file\"></em> " + res["file"].Propercase()); 945 $(mainContainer + " #" + ctlClientId + "addFilesJQuery a").attr("title", res["Add"] + " " + res["file"].Propercase()); 946 $(mainContainer + " #" + ctlClientId + "addFilesJQuery").off(); 947 $(mainContainer + " #" + ctlClientId + "addFilesJQuery").on("click", function (e) { 948 e.stopPropagation(); 949 e.preventDefault(); 950 displayUploader(); 951 return false; 952 }); 953 954 $(mainContainer + " #addLink" + ctlSuffixId + " a").html("<em class=\"fa fa-link\"></em> " + res["link"].Propercase()); 955 $(mainContainer + " #addLink" + ctlSuffixId + " a").attr("title", res["Add"] + " " + res["link"].Propercase()); 956 $(mainContainer + " #addLink" + ctlSuffixId).off(); 957 $(mainContainer + " #addLink" + ctlSuffixId).on("click", function (e) { 958 e.stopPropagation(); 959 e.preventDefault(); 960 displayUpsertLinkModal(_contextId, { "Id": 0 }); 961 return false; 962 }); 963 964 ///Add Menu items 965 $(mainContainer + " .PO-settingDropdownButton").html("<em class=\"fa fa-plus\"></em> " + res["Add"] + "</a>"); 966 $(mainContainer + " .PO-settingDropdownButton").attr("title", res["Add"] + res["Items"]); 967 $(mainContainer + " .PO-settingDropdownButton").off("
967click"); 968 $(mainContainer + " .PO-settingDropdownButton").on("click", function (e) { 969 e.preventDefault(); 970 $(mainContainer + " #addDropdown" + ctlSuffixId).slideToggle(); 971 972 }); 973 974 $(mainContainer + " #addDropdown" + ctlSuffixId).off("mouseleave"); 975 $(mainContainer + " #addDropdown" + ctlSuffixId).on("mouseleave", function (e) { 976 e.preventDefault(); 977 $(mainContainer + " #addDropdown" + ctlSuffixId).slideToggle(); 978 }); 979 } 980 else { 981 $(mainContainer + " div .PO-settingMenuBar").hide(); 982 } 983 if (_permit.IsAdmin && !isGuestMode) { 984 if (showDispSettings) { 985 $(mainContainer + " .settingsLi").show(); 986 $(mainContainer + " .settingsLi").first().html("<span>|</span>"); 987 $(mainContainer + " #displaySettingsLink" + ctlSuffixId).html("<em class=\"fa fa-cog\"></em> " + res["Settings"]); 988 $(mainContainer + " #displaySettingsLink" + ctlSuffixId).attr("title", res["Settings"]); 989 $(mainContainer + " #displaySettingsLink" + ctlSuffixId).off(); 990 $(mainContainer + " #displaySettingsLink" + ctlSuffixId).on("click", function (e) { 991 e.preventDefault(); 992 displaySettingsModal(_contextId); 993 }); 994 } 995 else { 996 $(mainContainer + " #displaySettingsLink" + ctlSuffixId).off("click"); 997 $(mainContainer + " #displaySettingsLink" + ctlSuffixId).empty(); 998 $(mainContainer + " .settingsLi").hide(); 999 } 1000 if (_permit.IsAdmin) { 1001 $(mainContainer + " .activityLi").show(); 1002 $(mainContainer + " .activityLi").first().html("<span>|</span>"); 1003 $(mainContainer + " #activityLink" + ctlSuffixId).parent().show(); 1004 $(mainContainer + " #activityLink" + ctlSuffixId).html("<em class=\"fa fa-check\"></em> " + res["Activity"]) 1005 $(mainContainer + " #activityLink" + ctlSuffixId).attr("title", res["Activity"]); 1006 $(actLink).off("click"); 1007 $(actLink).on("click", function (e) { 1008 e.preventDefault(); 1009 displayActivityModal(_contextId); 1010 }); 1011 } else { 1012 $(actLink).off("click"); 1013 $(mainContainer + " #activityLink" + ctlSuffixId).empty(); 1014 $(mainContainer + " .activityLi").hide(); 1015 } 1016 1017 if (_permit.IsAdmin) { 1018 $(mainContainer + " .securityLi").show(); 1019 $(mainContainer + " .securityLi").first().html("<span>|</span>"); 1020 $(mainContainer + " #secuirtyLink" + ctlSuffixId).parent().show(); 1021 $(mainContainer + " #secuirtyLink" + ctlSuffixId).html("<em class=\"fa fa-lock\"></em> " + res["Security"]); 1022 $(mainContainer + " #secuirtyLink" + ctlSuffixId).attr("title", res["Security"]); 1023 $(secLink).off("click"); 1024 $(secLink).on("click", function (e) { 1025 e.preventDefault(); 1026 document.location.href = _settings.SecLink; 1027 }); 1028 1029 if (canUseMultiSelect) { 1030 // Select Mutiple button set up 1031 $(mainContainer + " .multiMoveLi").show(); 1032 $(mainContainer + " .multiMoveLi").first().html("<span>|</span>"); 1033 1034 $(mainContainer + " #MultiMoveLink").html("<em class=\"fa fa-check-square-o\"></em> " + res["SelectMultiple"]); 1035 $(mainContainer + " #MultiMoveLink").attr("title", res["SelectMultiple"]); 1036 $(mainContainer + " #MultiMoveLink").off("click"); 1037 $(mainContainer + " #MultiMoveLink").on("click", function (e) { 1038 e.preventDefault(); 1039 displayMultipleSelect(_contextId); 1040 }); 1041 // Move Selected to... button set up
1042 $(mainContainer + " .CMS_bAction").off("click"); 1043 $(mainContainer + " .CMS_bAction").on("click", function (e) { 1044 e.preventDefault(); 1045 if ((selectedItems.length > 0) === false) { 1046 commons.ShowErrorMessage(res["NoItemsSelectedError"]); 1047 return false; 1048 } 1049 var firstItem = selectedItems[0]; 1050 var locationFolderId = $(this).attr("locationFolderId"); 1051 displayMoveModalMultiple(_contextId, { "Id": firstItem, "Name": res["AllSelectedItems"], "parentId": _contextId, "locationFolderId": locationFolderId }); 1052 }); 1053 } 1054 else { 1055 $(mainContainer + " .multiMoveLi").remove(); 1056 $(mainContainer + " #MultiMoveLink").remove(); 1057 $(mainContainer + " .multiMoveOption").remove(); 1058 } 1059 1060 if (!_permit.CanCreate) { 1061 $(mainContainer + " .PO-settingDropdownButton").parent().remove(); 1062 } 1063 } else { 1064 $(secLink).off("click"); 1065 $(mainContainer + " #secuirtyLink" + ctlSuffixId).empty(); 1066 $(mainContainer + " .securityLi" + ctlSuffixId).hide(); 1067 } 1068 } 1069 else { 1070 $(mainContainer + " #displaySettingsLink" + ctlSuffixId).off("click"); 1071 $(mainContainer + " #displaySettingsLink" + ctlSuffixId).empty(); 1072 $(mainContainer + " .settingsLi").hide(); 1073 $(actLink).off("click"); 1074 $(mainContainer + " #activityLink" + ctlSuffixId).empty(); 1075 $(mainContainer + " .activityLi").hide(); 1076 $(secLink).off("click"); 1077 $(mainContainer + " #secuirtyLink" + ctlSuffixId).empty(); 1078 $(mainContainer + " .securityLi" + ctlSuffixId).hide(); 1079 // hide Select Multiple option 1080 $(mainContainer + " #selectMultipleLink").off("click"); 1081 $(mainContainer + " #selectMultipleLink").empty(); 1082 $(mainContainer + " .multipleLi").hide(); 1083 } 1084 if (_permit.CanWrite && !isGuestMode) { 1085 $(document).off('dragenter'); 1086 $(document).on('dragenter', function (e) { 1087 e.stopPropagation(); 1088 e.preventDefault(); 1089 }); 1090 $(document).off('dragover'); 1091 $(document).on('dragover', function (e) { 1092 e.stopPropagation(); 1093 e.preventDefault(); 1094 //dragandrophandler.css('border', '2px dotted #0B85A1'); 1095 }); 1096 $(document).off('drop'); 1097 $(document).on('drop', function (e) { 1098 e.stopPropagation(); 1099 e.preventDefault(); 1100 }); 1101 } 1102 }; 1103 1104 //Update header with sort icon 1105 var updateHeader = function (sortColumn, sortDir) { 1106 var ascControl = "<em class=\"fa fa-caret-up\"></em>"; 1107 var descControl = "<em class=\"fa fa-caret-down\"></em>"; 1108 var dataVar = sortColumn.attr("data"); 1109 var columnText = sortColumn.children().first().html(); 1110 1111 $(mainContainer + " div.sortcolumn").each(function () { 1112 if ($(this).attr("data") === dataVar) { 1113 $(this).addClass("active"); 1114 $(this).find("em").remove(); 1115 $(this).append(sortDir === "asc" ? ascControl : descControl); 1116 var updateDir = sortDir; 1117 if (updateDir === "desc") { 1118 updateDir = "asc"; //asc 1119 } else { 1120 updateDir = "desc"; //desc 1121 } 1122 $(this).attr("sort-direction", updateDir); 1123 if (sortDir === "desc") { 1124 $(this).attr("title", res["Asc"].format(columnText)); 1125 } else { 1126 $(this).attr("title", res["Desc"].format(columnText)); 1127 } 1128 } 1129 else { 1130 $(this).removeClass("active"); 1131 $(this).find("em").remove(); 1132 } 1133 }); 1134 }; 1135 1136 var sortDataList = function (sortColumnName, sortasc) { 1137 //set values 1138 _sortby = sortColumnName; 1139 _sortasc = sortasc; 1140 //updat sort header UI 1141 updateHeader($("div.sortcolumn[data='" + sortColumnName + "']"), sortasc ? "asc" : "desc"); 1142 //update item list UI 1143 displayContentData(_data); 1144 }; 1145 1146 1147 //Append header row 1148 var appendHeader = function () { 1149 $(headerSelector).find("div").remove(); 1150 var columnTemplate = "<div class=\"item {sort}\" data=\"{data}\" sort-direction=\"asc\" title=\"{tooltip}\"><a href='#' role='button' aria-label=\"{arialabel}\">{title}</a></div>"; 1151 var hRow = "<div> " 1152 + "{column0}" 1153 + "{column1}" 1154 + "</div> " 1155 + "<div> " 1156 + "{column2}" 1157 + "{column3}" 1158 + "</div>"; 1159 for (var i = 0; i <= columns.length - 1; i++) { 1160 if ((columns[i].data === "CreationUser" && hideUserField) 1161 || (columns[i].data === "ModifiedDateString" && hideModifiedDateField) 1162 || (columns[i].data === "FileSize" && hideSizeField)) { 1163 hRow = hRow.replace("{column" + i + "}", ""); 1164 } 1165 else if (columns[i].visible) { 1166 var col = columnTemplate.replace(/\{data}/g, columns[i].data); 1167 col = col.replace(/\{sort}
1167/g, (columns[i].sort ? "sortcolumn" : "")); 1168 col = col.replace(/\{title}/g, columns[i].title); 1169 col = col.replace(/\{tooltip}/g, res["Asc"].format(columns[i].title)); 1170 col = col.replace(/\{arialabel}/g, "Sort by " + columns[i].arialabel); 1171 hRow = hRow.replace("{column" + i + "}", col); 1172 } 1173 } 1174 $(headerSelector).append(hRow); 1175 1176 $(mainContainer + " div.sortcolumn").off("click"); 1177 $(mainContainer + " div.sortcolumn").on("click", function (e) { 1178 e.preventDefault(); 1179 var dataVar = $(this).attr("data"); 1180 var sortDir = $(this).attr("sort-direction"); 1181 _currentPage = 0; 1182 1183 if (sortDir === "") { 1184 sortDir = "asc"; //asc 1185 } 1186 _sortcriteria = (_sortcriteria.indexOf(dataVar) >= 0) ? "" : dataVar + sortDir; 1187 sortDataList(dataVar, sortDir === "desc" ? false : true); 1188 }); 1189 1190 }; 1191 1192 //Display data in table from service : Header row and data rows 1193 var displayContentData = function (data) { 1194 1195 if (_data.length > 1) { 1196 _data = _data.sort(function (first, second) { 1197 var valA; 1198 var valB; 1199 switch (_sortby) { 1200 case "Name": 1201 valA = first.Name.toLowerCase(); valB = second.Name.toLowerCase(); 1202 break; 1203 case "FileSize": 1204 valA = parseInt(first.FileSize); valB = parseInt(second.FileSize); 1205 break; 1206 case "CreationUser": 1207 valA = (!first.CreationUser ? "" : first.CreationUser).toLowerCase(); valB = (!second.CreationUser ? "" : second.CreationUser).toLowerCase(); 1208 break; 1209 case "CreationDate": 1210 valA = first.CreationDate; valB = second.CreationDate; 1211 break; 1212 case "ModifiedDateString": 1213 valA = parseInt(first.ModifiedDateTicks); valB = parseInt(second.ModifiedDateTicks); 1214 break; 1215 } 1216 var val1A = first.Name.toLowerCase(); var val1B = second.Name.toLowerCase(); 1217 if (_sortasc) { 1218 return valA > valB ? 1 : (valA < valB ? -1 : (val1A > val1B ? 1 : -1)); 1219 } 1220 else { 1221 return valA < valB ? 1 : (valA > valB ? -1 : (val1A > val1B ? 1 : -1)); 1222 } 1223 }); 1224 } 1225 1226 appendPagerAndData(listSelector, _data); 1227 }; 1228 1229 var addPageButton = function (startPage, lastPage) { 1230 if (startPage <= 0) startPage = 0; 1231 var pagebutton = ""; 1232 pagebutton += "<li><a href='#' class=\"pageButton\" tag=\"-1\" title=\"" + res["PrevPage"] + "\"><em class=\"fa fa-arrow-left\"></em></a></li>"; 1233 pagebutton += "<li><a href='#' class=\"nextPrev\" tag=\"" + (startPage + 1) + "\" id=\"prev\" title=\"" + res["PrevPages"] + "\" >...</a></li>"; 1234 for (var i = 0; i <= noofpagebuttons - 1; i++) { 1235 if (i > lastPage) continue; 1236 else { 1237 pagebutton += "<li><a href='#' class=\"pageButton number\" tag=\"" + i + "\" title=\"" + (i + 1) + res["Page"] + "\">" + (i + 1) + " </a></li>"; 1238 } 1239 } 1240 pagebutton += "<li><a href='#' class=\"nextPrev\" tag=\"" + (startPage + 1) + "\" id=\"next\" title=\"" + res["NextPage"] + "\" >...</a></li>"; 1241 pagebutton += "<li><a href='#' class=\"pageButton\" tag=\"+1\" title=\"" + res["NextPages"] + "\"><em class=\"fa fa-arrow-right\"></em></a></li>"; 1242 return pagebutton; 1243 }; 1244 1245 var updateButton = function (startPage, lastPage) { 1246 var i = startPage; 1247 $(pagerSelector + " a.number").each(function () { 1248 if (i <= lastPage) { 1249 $(this).show(); 1250 var tag = $(this).attr("tag"); 1251 $(this).attr("tag", i - 1); 1252 $(this).attr("title", i + res["Page"]); 1253 $(this).html(i); 1254 } 1255 else { $(this).hide(); } 1256 i += 1; 1257 }); 1258 $(pagerSelector + " a.nextPrev").attr("tag", startPage); 1259 if (startPage <= 1) { 1260 $(pagerSelector + " li").first().hide(); 1261 $(pagerSelector + " li").first().next().hide(); 1262 } 1263 else { 1264 $(pagerSelector + " li").first().show(); 1265 $(pagerSelector + " li").first().next().show(); 1266 } 1267 if (i > lastPage) { 1268 $(pagerSelector + " li").last().hide(); 1269 $(pagerSelector + " li").last().prev().hide(); 1270 } 1271 else { 1272 $(pagerSelector + " li").last().show(); 1273 $(pagerSelector + " li").last().prev().show(); 1274 } 1275 }; 1276 1277 //Show search result status 1278 var showPageStatus = function (iPage, data, pagesize) { 1279 if (Math.ceil(data.length / pagesize) > 0) 1280 $(mainContainer + " .PO-pageCount").html(res["PageStatus"].format((iPage + 1), Math.ceil(data.length / pagesize))); 1281 else 1282 $(mainContainer + " .PO-pageCount").text(""); 1283 }; 1284 1285 //Show current page 1286 var showCurrentPage = function () { 1287 $(mainContainer + " .pageButton").each(function () { 1288 var incrementButton = $(this).attr("tag").indexOf("+") < 0 && $(this).attr("tag").indexOf("-") < 0; 1289 if (parseInt($(this).attr("tag")) === _currentPage && incrementButton) { 1290 $(this).addClass("active"); 1291 //console.log($(this).attr("tag")); 1292 } else 1293 $(this).removeClass("active"); 1294 }); 1295 $(mainContainer + " .nextPrev").each(function () { 1296 $(this).removeClass("active"); 1297 }); 1298 //showCurrentItem(); 1299 }; 1300 1301 //Show current item 1302 var showCurrentItem = function () { 1303 if (_activeItem > 0) { 1304 var ctrlClick = $(mainContainer + " a.dataRowItem[data=" + _activeItem + "]"); 1305 if (ctrlClick) { 1306 //if (ctrlClick.attr("data-type") == "content_folder") 1307 //{ ctrlClick.parent().find(".folderSettingsToggle").trigger("click"); } 1308 //else 1309 //{ ctrlClick.trigger("click", ["Show", "event"]); } 1310 ctrlClick.parent().find("a").first().focus(); 1311 } 1312 //if (_activeObject) 1313 // if (_activeObject.eq(0).attr("data-id") == _activeItem) { 1314 // ctrlClick.parent().find("a." + _activeObject.eq(0).attr("class")).focus(); 1315 // } 1316 } 1317 //showListfocus(); 1318 1319 1320 1321 //showCurrentfocus(); 1322 }; 1323 1324 //Show current object focused 1325 var showListfocus = function () { 1326 listSelector.find("li a").first().focus(); 1327 }; 1328 1329 //Set feature items 1330 var setDetailRow = function (data) { 1331 var subscriptionLink = ""; 1332 var returnString = ""; 1333 var moveToLink = ""; 1334 var deleteLink = "" 1335 var propLink = ""; 1336 var editLink = ""; 1337 var openLink = ""; 1338 var activityLink = ""; 1339 var securityLink = ""; 1340 if (data.canWrite) { 1341 editLink = "<li><a href='#' class=\"edititem\" title=\"" + res["EditLinkTitle"] + "'" + data.Name + "'\" aria-haspopup=\"true\" data-id=\"{object}\" data-item=\"{type}\" data-name=\"{name}\"><em class=\"fa fa-pencil-square-o\"></em> {1}</a></li>"; 1342 1343 propLink = "<li><a href='#' class=\"propitem\" title=\"" + res["PropertiesLinkTitle"] + "'" + data.Name + "'\" data-create=\"" + data.canCreate + "\" data-del=\"" + data.canDelete + "\" data-adm=\"" + data.isAdmin + "\" aria-haspopup=\"true\" id=\"lnkEdit_{object}\" data-id=\"{object}\" data-item=\"{type}\" data-name=\"{name}\"><em class=\"fa fa-pencil-square-o\"></em> {1}</a></li>".replace('{1}', res["Edit"]); 1344 } 1345 if (_permit.CanWrite) { 1346 moveToLink = "<li><a href='#' class=\"moveitem\" title=\"" + res["MoveToLinkTitle"] + "'" + data.Name + "'\" aria-haspopup=\"true\" id=\"lnkMove_{object}\" data-id=\"{object}\" data-item=\"{type}\" data-name=\"{name}\" locationFolderId=\"" + data.ParentId + "\"><em class=\"fa fa-folder-open\"></em> {1}</a></li>".replace('{1}', res["MoveTo"]); 1347 } 1348 if (data.isAdmin) { 1349 activityLink = "<li><a href='#' class=\"actitem\" title=\"" + res["ActivityLinkTitle"] + " '" + data.Name + "'\" aria-haspopup=\"true\" data-id=\"{object}\" data-item=\"{type}\" data-name=\"{name}\"><em class=\"fa fa-check\"></em> {1}</a></li>".replace('{1}', res["Activity"]); 1350 securityLink = "<li><a href=\"" + data.SecLink + "\" class=\"secitem\" title=\"" + res["SecurityLinkTitle"] + " '" + data.Name + "'\" data-id=\"{object}\" data-item=\"{type}\" data-name=\"{name}\"><em class=\"fa fa-lock\"></em> {1}</a></li>".replace('{1}', res["Security"]); 1351 } 1352 if (data.canDelete) { 1353 deleteLink = "<li><a href='#' class=\"deleteitem\" title=\"" + res["DeleteLinkTitle"] + " '" + data.Name + "'\" aria-haspopup=\"true\" id=\"lnkDelete_{object}\" data-id=\"{object}\" data-item=\"{type}\" data-name=\"{name}\">
1353<em class=\"fa fa-trash\"></em>{1}</a></li>"; 1354 } 1355 if (showSubscription) { 1356 subscriptionLink = "<li><a href='#' class=\"subscriptionitem\" title=\"" + res["SubscriptionLinkTitle"] + " '" + data.Name + "'\" aria-haspopup=\"true\" id=\"lnkSubscription_{object}\" data-id=\"{object}\" data-item=\"{type}\" data-name=\"{name}\"><em class=\"fa fa-bell\"></em>{1}</a></li>".replace('{1}', res["Subscribe"]); 1357 } 1358 var copyLink = "<li><a href='#' class=\"copyLink\" title=\"" + res["CopyLinkTitle"] + " '" + data.Name + "'\" data-clipboard-action=\"copy\" id=\"lnkCopy_{object}\" data-clipboard-text=\"" + data.Link + "\" data-id=\"{object}\" data-item=\"{type}\" data-name=\"{name}\" ><em class=\"fa fa-clipboard\"></em> {1}</a></li>"; 1359 var downloadLink = "<li><a href=\"" + data.DownloadLink + "\" download=\"" + data.Name + "\" title=\"" + res["DownloadLinkTitle"] + " '" + data.Name + "'\" target=\"_blank\" class=\"downloaditem fileName\" data-id=\"{object}\" data-item=\"{type}\" data-name=\"{name}\" ><em class=\"fa fa-download\" ></em> {1}</a></li>".replace('{1}', res["Download"]); 1360 1361 1362 var linkRes = res["link"]; 1363 var fileRes = res["file"]; 1364 var folRes = res["folder"]; 1365 var chatRes = res["chat"]; 1366 var addressFeature = res["Iwantto"]; 1367 switch (data.Type) { 1368 case "content_extlink": 1369 openLink = "<li><a href=\"" + data.Link + "\" target=\"_blank\" class=\"openLink\" title=\"" + res["OpenLinkTitle"] + " '" + data.Name + "'\" data-id=\"{object}\" data-item=\"{type}\" data-name=\"{name}\" ><em class=\"fa fa-external-link\"></em> {1}</a></li>".replace("{1}", res["OpenLink"]); 1370 returnString = "<div class=\"fileActions\"><ul><li>{0}</li>{1}{2}{3}{4}{5}{6}{7}</ul></div>".format(addressFeature, copyLink.format(linkRes, res["CopyLink"]), editLink.format(linkRes, res["Edit"]), moveToLink.format(linkRes, res["MoveTo"]), deleteLink.format(linkRes, res["Delete"]), subscriptionLink.format(linkRes), openLink.format(linkRes), activityLink.format(linkRes)); 1371 break; 1372 case "content_folder": 1373 returnString = "<div class=\"fileActions\"><ul><li>{0}</li></li>{1}{2}{3}{4}{5}{6}</ul></div>".format(addressFeature, copyLink.format(folRes, res["CopyLink"]), editLink.format(folRes, res["Edit"]), moveToLink.format(folRes, res["MoveTo"]), deleteLink.format(folRes, res["Delete"]), subscriptionLink.format(linkRes), activityLink.format(folRes)); 1374 break; 1375 case "workspace_chat": 1376 returnString = "<div class=\"fileActions\"><ul><li>{0}</li></li>{1}{2}{3}{4}{5}{6}</ul></div>".format(addressFeature, copyLink.format(chatRes, res["CopyLink"]), "", moveToLink.format(chatRes, res["MoveTo"]), deleteLink.format(chatRes, res["Delete"]), subscriptionLink.format(linkRes), activityLink.format(chatRes)); 1377 break; 1378 default: 1379 returnString = "<div class=\"fileActions\"><ul><li>{0}</li></li>{1}{2}{3}{4}{5}{6}{7}{8}{9}</ul></div>".format(addressFeature, copyLink.format(fileRes, res["CopyLink"]), propLink, moveToLink.format(fileRes, res["MoveTo"]), deleteLink.format(fileRes, res["Delete"]), "", downloadLink, subscriptionLink.format(linkRes), activityLink.format(fileRes), securityLink.format(fileRes)); 1380 break; 1381 } 1382 1383 return returnString.replace(/\{type}/g, data.Type).replace(/\{object}/g, data.ObjectId).replace(/\{name}/g, data.Name); 1384 }; 1385 1386 // Prepare the file/folder/link control 1387 var configureDownloadLink = function (anchor, data) { 1388 switch (data.Type) { 1389 case "content_folder": 1390 anchor.href = "#"; 1391 anchor.title = res["FolderTooltip"] + " '" + data.Name + "'"; 1392 break; 1393 case "content_item": 1394 anchor.href = data.Link; 1395 anchor.title = data.Title; 1396 anchor.setAttribute("alt", data.Title); 1397 anchor.setAttribute("target", "_blank"); 1398 break; 1399 case "content_extlink": 1400 anchor.href = data.Link; 1401 anchor.title = res["OpenLink"] + " '" + data.Name + "'"; 1402 anchor.target = "_blank"; 1403 break; 1404 default: 1405 anchor.href = "#"; 1406 anchor.title = res["ItemDetails"] + " '" + data.Name + "'"; 1407 break; 1408 } 1409 }; 1410 1411 var clearList = function (ctrl) { 1412 if (_back !== undefined && _back.length > 0) 1413 ctrl.find("li").not(".subfolder").remove(); 1414 else 1415 ctrl.empty(); 1416 ctrl.find("li.norecords").remove(); 1417 }; 1418 1419 //Show no records template 1420 var showNoRecordsTemplate = function (lstControl) { 1421 clearList(lstControl); 1422 addSubFolderRow(lstControl); 1423 appendHeader(lstControl); 1424 var tableRow = $("<li class=\"norecords\">" + res["NoRecords"] + "</li>"); 1425 lstControl.append(tableRow); 1426 }; 1427 1428 var getTreeNode = function () { 1429 var treeNode = ""; 1430 if (_back !== undefined && _back.length > 0) { 1431 treeNode += "<div class=\"folderTree\"><em class=\"fa fa-level-up fa-rotate-90\" title=\"" + res["SubFolder"] + "\"></em></div>"; 1432 } 1433 return treeNode; 1434 } 1435 1436 //Append DataRow as per paging AppendDataRow 1437 var appendDataRow = function (ctrl, iPage, data, pagesize) { 1438 clearList(ctrl); 1439 var endCount = ((iPage * pagesize) + pagesize) - 1; 1440 if (data.length < endCount) { 1441 endCount = data.length; 1442 } 1443 1444 for (var i = iPage * pagesize; i <= endCount; i++) { 1445 if (data[i] !== undefined) { 1446 var dateString = ""; 1447 if (!hideModifiedDateField) 1448 dateString = data[i].ModifiedDateString; 1449 1450 var sizeString = ""; 1451 if (!hideSizeField) 1452 sizeString = (data[i].FileSizeString === "0 B " ? "" : data[i].FileSizeString); 1453 1454 var userString = ""; 1455 if (!hideUserField && data[i].CreationUser) 1456 userString = data[i].CreationUser; 1457 1458 // if item has been marked as selected, check the checkbox
1459 // note this is for navigating through folders to preserve the selected item values 1460 var itemChecked = ""; 1461 if (selectedItems.length > 0 && (selectedItems.indexOf(data[i].ObjectId.toString()) > -1)) { 1462 itemChecked = "checked"; 1463 } 1464 1465 var dataRow; 1466 1467 if (canUseMultiSelect) { 1468 if (data[i].Type === "content_folder") { 1469 dataRow = document.createElement("li"); 1470 dataRow.className = "folder"; 1471 1472 var multiMove = document.createElement("div"); 1473 multiMove.className = "multiMove"; 1474 1475 var displayTableMultiMove = document.createElement("div"); 1476 displayTableMultiMove.className = "displayTable"; 1477 1478 var label = document.createElement("label"); 1479 label.className = "CMS_checkbox CMS_cb_noText"; 1480 1481 var input = document.createElement("input"); 1482 input.type = "checkbox"; 1483 input.className = "CMS_input"; 1484 input.setAttribute("aria-label", "Click to select item"); 1485 input.setAttribute("aria-hidden", "true"); 1486 if (itemChecked) input.setAttribute("checked", "checked"); 1487 input.setAttribute("data-type", data[i].Type); 1488 input.setAttribute("data-write", data[i].canWrite); 1489 input.setAttribute("data", data[i].ObjectId); 1490 1491 var span = document.createElement("span"); 1492 var em = document.createElement("em"); 1493 em.className = "fa"; 1494 em.setAttribute("aria-hidden", "true"); 1495 span.appendChild(em); 1496 1497 label.appendChild(input); 1498 label.appendChild(span); 1499 displayTableMultiMove.appendChild(label); 1500 multiMove.appendChild(displayTableMultiMove); 1501 dataRow.appendChild(multiMove); 1502 1503 var anchor = document.createElement("a"); 1504 anchor.className = `documentDetailsToggle ${data[i].Type} dataRowItem`; 1505 anchor.setAttribute("data-type", data[i].Type); 1506 anchor.setAttribute("data-write", data[i].canWrite); 1507 anchor.setAttribute("data", data[i].ObjectId); 1508 anchor.setAttribute("href", "#"); 1509 anchor.setAttribute("title", res["ItemDetails"] + " '" + data[i].Name + "'"); 1510 configureDownloadLink(anchor, data[i]); 1511 1512 var displayTable = document.createElement("div"); 1513 displayTable.className = "displayTable"; 1514 1515 var treeNode = getTreeNode(); 1516 if (treeNode) { 1517 displayTable.innerHTML += treeNode; 1518 } 1519 1520 var iconType = document.createElement("div"); 1521 iconType.className = "iconType"; 1522 var iconItem = document.createElement("div"); 1523 iconItem.className = "item"; 1524 iconItem.innerHTML = commons.GetImageIconAsPerFile(data[i].Extension, data[i].Type); 1525 iconType.appendChild(iconItem); 1526 displayTable.appendChild(iconType); 1527 1528 var titleUser = document.createElement("div"); 1529 titleUser.className = "titleUser"; 1530 1531 var docTitle = document.createElement("div"); 1532 docTitle.className = "item docTitle"; 1533 docTitle.innerHTML = data[i].Name; 1534 titleUser.appendChild(docTitle); 1535 1536 var uploader = document.createElement("div"); 1537 uploader.className = "item uploader"; 1538 uploader.textContent = userString; 1539 titleUser.appendChild(uploader); 1540 1541 if (data[i].ParentName.length > 0) { 1542 var docBread = document.createElement("div"); 1543 docBread.className = "item docBread"; 1544 docBread.innerHTML = `<strong>Folder:</strong> ... / ${data[i].ParentName}`; 1545 titleUser.appendChild(docBread); 1546 } 1547 1548 displayTable.appendChild(titleUser); 1549 1550 var sizeTime = document.createElement("div"); 1551 sizeTime.className = "sizeTime"; 1552 1553 var docSize = document.createElement("div"); 1554 docSize.className = "item docSize"; 1555 if (data[i].Type === "content_folder") { 1556 docSize.textContent = data[i].ChildrenCount + res["Items"]; 1557 } else { 1558 docSize.textContent = data[i].Type === "content_extlink" ? "" : sizeString; 1559 } 1560 sizeTime.appendChild(docSize); 1561 1562 displayTable.appendChild(sizeTime); 1563 anchor.appendChild(displayTable); 1564 dataRow.appendChild(anchor); 1565 1566 var documentDetails = document.createElement("div"); 1567 documentDetails.className = "documentDetails"; 1568 documentDetails.setAttribute("aria-haspopup", "true"); 1569 1570 if (data[i].Description && data[i].canRead) { 1571 var fileDescription = document.createElement("div"); 1572 fileDescription.className = "fileDescription"; 1573 fileDescription.textContent = data[i].Description; 1574 documentDetails.appendChild(fileDescription); 1575 } 1576 1577 dataRow.appendChild(documentDetails); 1578 1579 var downloadButton = document.createElement("a"); 1580 downloadButton.className = "downloadButton folderSettingsToggle"; 1581 downloadButton.setAttribute("aria-label", "toggle options"); 1582 downloadButton.setAttribute("data", data[i].ObjectId); 1583 downloadButton.setAttribute("href", "#"); 1584 downloadButton.setAttribute("title", res["ItemDetails"] + " '" + data[i].Name + "'"); 1585 1586 var bulletButton = document.createElement("div"); 1587 bulletButton.className = "displayTable"; 1588 var bulletSpan = document.createElement("div"); 1589 bulletSpan.className = "bulletButton"; 1590 bulletSpan.innerHTML = "<span>â¢â¢â¢</span>"; 1591 bulletButton.appendChild(bulletSpan); 1592 downloadButton.appendChild(bulletButton); 1593 1594 dataRow.appendChild(downloadButton); 1595 } else { 1596 dataRow = document.createElement("li"); 1597 1598 var multiMove = document.createElement("div"); 1599 multiMove.className = "multiMove"; 1600 1601 var displayTableMultiMove = document.createElement("div"); 1602 displayTableMultiMove.className = "displayTable"; 1603 1604 var label = document.createElement("label"); 1605 label.className = "CMS_checkbox CMS_cb_noText"; 1606 1607 var input = document.createElement("input"); 1608 input.type = "checkbox"; 1609 input.className = "CMS_input"; 1610 input.setAttribute("aria-label", "Click to select item"); 1611 input.setAttribute("aria-hidden", "true"); 1612 if (itemChecked) input.setAttribute("checked", "checked"); 1613 input.setAttribute("data-type", data[i].Type); 1614 input.setAttribute("data-write", data[i].canWrite); 1615 input.setAttribute("data", data[i].ObjectId); 1616 1617 var span = document.createElement("span"); 1618 var em = document.createElement("em"); 1619 em.className = "fa"; 1620 em.setAttribute("aria-hidden", "true"); 1621 span.appendChild(em); 1622 1623 label.appendChild(input); 1624 label.appendChild(span); 1625 displayTableMultiMove.appendChild(label); 1626 multiMove.appendChild(displayTableMultiMove); 1627 dataRow.appendChild(multiMove); 1628 1629 var documentDetailsToggle = document.createElement("div"); 1630 documentDetailsToggle.className = `documentDetailsToggle ${data[i].Type} dataRowItem`; 1631 1632 var displayTable = document.createElement("div"); 1633 displayTable.className = "displayTable"; 1634 1635 var treeNode = getTreeNode(); 1636 if (treeNode) { 1637 displayTable.innerHTML += treeNode; 1638 } 1639 1640 var iconType = document.createElement("div"); 1641 iconType.className = "iconType iconTypeItem"; 1642 var iconItem = document.createElement("div"); 1643 iconItem.className = "item"; 1644 iconItem.innerHTML = commons.GetImageIconAsPerFile(data[i].Extension, data[i].Type); 1645 iconType.appendChild(iconItem); 1646 displayTable.appendChild(iconType); 1647 1648 var titleUser = document.createElement("div"); 1649 titleUser.className = "titleUser"; 1650 1651 var docItemTitle = document.createElement("a"); 1652 docItemTitle.className = "item docItemTitle"; 1653 docItemTitle.setAttribute("data-type", data[i].Type); 1654 docItemTitle.setAttribute("data-write", data[i].canWrite); 1655 docItemTitle.setAttribute("data", data[i].ObjectId); 1656 docItemTitle.setAttribute("href", "#"); 1657 docItemTitle.innerHTML = data[i].Name; 1658 configureDownloadLink(docItemTitle, data[i]); 1659 titleUser.appendChild(docItemTitle); 1660 1661 var uploader = document.createElement("div"); 1662 uploader.className = "item uploader"; 1663 uploader.textContent = userString; 1664 titleUser.appendChild(uploader); 1665 1666 if (data[i].ParentName.length > 0) { 1667 var docBread = document.createElement("div"); 1668 docBread.className = "item docBread"; 1669 docBread.innerHTML = `<strong>Folder:</strong> ... / ${data[i].ParentName}`; 1670 titleUser.appendChild(docBread); 1671 } 1672 1673 displayTable.appendChild(titleUser); 1674 1675 var sizeTime = document.createElement("div"); 1676 sizeTime.className = "sizeTime"; 1677 1678 var docSize = document.createElement("div"); 1679 docSize.className = "item docSize"; 1680 if (data[i].Type === "content_folder") { 1681 docSize.textContent = data[i].ChildrenCount + res["Items"]; 1682 } else { 1683 docSize.textContent = data[i].Type === "content_extlink" ? "" : sizeString; 1684 } 1685 sizeTime.appendChild(docSize); 1686 1687 if (data[i].Type !== "content_folder") { 1688 var docDate = document.createElement("div"); 1689 docDate.className = "item docDate"; 1690 docDate.innerHTML = dateString; 1691 sizeTime.appendChild(docDate); 1692 } 1693 1694 displayTable.appendChild(sizeTime); 1695 documentDetailsToggle.appendChild(displayTable); 1696 dataRow.appendChild(documentDetailsToggle); 1697 1698 var documentDetails = document.createElement("div"); 1699 documentDetails.className = "documentDetails"; 1700 documentDetails.setAttribute("aria-haspopup", "true"); 1701 1702 if (data[i].Description && data[i].canRead) { 1703 var fileDescription = document.createElement("div"); 1704 fileDescription.className = "fileDescription"; 1705 fileDescription.textContent = data[i].Description; 1706 documentDetails.appendChild(fileDescription); 1707 } 1708 1709 dataRow.appendChild(documentDetails); 1710 1711 var downloadButton = document.createElement("a"); 1712 downloadButton.className = "downloadButton folderSettingsToggle"; 1713 downloadButton.setAttribute("aria-label", "toggle options"); 1714 downloadButton.setAttribute("data", data[i].ObjectId); 1715 downloadButton.setAttribute("href", "#"); 1716 downloadButton.setAttribute("title", res["ItemDetails"] + " '" + data[i].Name + "'"); 1717 1718 var bulletButton = document.createElement("div"); 1719 bulletButton.className = "displayTable"; 1720 var bulletSpan = document.createElement("div"); 1721 bulletSpan.className = "bulletButton"; 1722 bulletSpan.innerHTML = "<span>â¢â¢â¢</span>"; 1723 bulletButton.appendChild(bulletSpan); 1724 downloadButton.appendChild(bulletButton); 1725 1726 dataRow.appendChild(downloadButton); 1727 } 1728 } else { 1729 if (data[i].Type === "content_folder") { 1730 dataRow = document.createElement("li"); 1731 dataRow.className = "folder"; 1732 1733 var anchor = document.createElement("a"); 1734 anchor.className = `documentDetailsToggle ${data[i].Type} dataRowItem`; 1735 anchor.setAttribute("data-type", data[i].Type); 1736 anchor.setAttribute("data-write", data[i].canWrite); 1737 anchor.setAttribute("data", data[i].ObjectId); 1738 anchor.setAttribute("href", "#"); 1739 anchor.setAttribute("title", res["ItemDetails"] + " '" + data[i].Name + "'"); 1740 configureDownloadLink(anchor, data[i]); 1741 1742 var displayTable = document.createElement("div"); 1743 displayTable.className = "displayTable"; 1744 1745 var treeNode = getTreeNode(); 1746 if (treeNode) { 1747 displayTable.innerHTML += treeNode; 1748 } 1749 1750 var iconType = document.createElement("div"); 1751 iconType.className = "iconType"; 1752 var iconItem = document.createElement("div"); 1753 iconItem.className = "item"; 1754 iconItem.innerHTML = commons.GetImageIconAsPerFile(data[i].Extension, data[i].Type); 1755 iconType.appendChild(iconItem); 1756 displayTable.appendChild(iconType); 1757 1758 var titleUser = document.createElement("div"); 1759
1759 titleUser.className = "titleUser"; 1760 1761 var docTitle = document.createElement("div"); 1762 docTitle.className = "item docTitle"; 1763 docTitle.innerHTML = data[i].Name; 1764 titleUser.appendChild(docTitle); 1765 1766 var uploader = document.createElement("div"); 1767 uploader.className = "item uploader"; 1768 uploader.textContent = userString; 1769 titleUser.appendChild(uploader); 1770 1771 if (data[i].ParentName.length > 0) { 1772 var docBread = document.createElement("div"); 1773 docBread.className = "item docBread"; 1774 docBread.innerHTML = `<strong>Folder:</strong> ... / ${data[i].ParentName}`; 1775 titleUser.appendChild(docBread); 1776 } 1777 1778 displayTable.appendChild(titleUser); 1779 1780 var sizeTime = document.createElement("div"); 1781 sizeTime.className = "sizeTime"; 1782 1783 var docSize = document.createElement("div"); 1784 docSize.className = "item docSize"; 1785 if (data[i].Type === "content_folder") { 1786 docSize.textContent = data[i].ChildrenCount + res["Items"]; 1787 } else { 1788 docSize.textContent = data[i].Type === "content_extlink" ? "" : sizeString; 1789 } 1790 sizeTime.appendChild(docSize); 1791 1792 displayTable.appendChild(sizeTime); 1793 anchor.appendChild(displayTable); 1794 dataRow.appendChild(anchor); 1795 1796 var documentDetails = document.createElement("div"); 1797 documentDetails.className = "documentDetails"; 1798 documentDetails.setAttribute("aria-haspopup", "true"); 1799 1800 if (data[i].Description && data[i].canRead) { 1801 var fileDescription = document.createElement("div"); 1802 fileDescription.className = "fileDescription"; 1803 fileDescription.textContent = data[i].Description; 1804 documentDetails.appendChild(fileDescription); 1805 } 1806 1807 dataRow.appendChild(documentDetails); 1808 1809 var downloadButton = document.createElement("a"); 1810 downloadButton.className = "downloadButton folderSettingsToggle"; 1811 downloadButton.setAttribute("aria-label", "toggle options"); 1812 downloadButton.setAttribute("data", data[i].ObjectId); 1813 downloadButton.setAttribute("href", "#"); 1814 downloadButton.setAttribute("title", res["ItemDetails"] + " '" + data[i].Name + "'"); 1815 1816 var bulletButton = document.createElement("div"); 1817 bulletButton.className = "displayTable"; 1818 var bulletSpan = document.createElement("div"); 1819 bulletSpan.className = "bulletButton"; 1820 bulletSpan.innerHTML = "<span>â¢â¢â¢</span>"; 1821 bulletButton.appendChild(bulletSpan); 1822 downloadButton.appendChild(bulletButton); 1823 1824 dataRow.appendChild(downloadButton); 1825 } else { 1826 dataRow = document.createElement("li"); 1827 1828 var documentDetailsToggle = document.createElement("div"); 1829 documentDetailsToggle.className = `documentDetailsToggle ${data[i].Type} dataRowItem`; 1830 1831 var displayTable = document.createElement("div"); 1832 displayTable.className = "displayTable"; 1833 1834 var treeNode = getTreeNode(); 1835 if (treeNode) { 1836 displayTable.innerHTML += treeNode; 1837 } 1838 1839 var iconType = document.createElement("div"); 1840 iconType.className = "iconType iconTypeItem"; 1841 var iconItem = document.createElement("div"); 1842 iconItem.className = "item"; 1843 iconItem.innerHTML = commons.GetImageIconAsPerFile(data[i].Extension, data[i].Type); 1844 iconType.appendChild(iconItem); 1845 displayTable.appendChild(iconType); 1846 1847 var titleUser = document.createElement("div"); 1848 titleUser.className = "titleUser"; 1849 1850 var docItemTitle = document.createElement("a"); 1851 docItemTitle.className = `item docItemTitle downloaditem fileName ${data[i].Type} dataRowItem`; 1852 docItemTitle.setAttribute("data-type", data[i].Type); 1853 docItemTitle.setAttribute("data-write", data[i].canWrite); 1854 docItemTitle.setAttribute("data", data[i].ObjectId); 1855 docItemTitle.setAttribute("href", "#"); 1856 docItemTitle.setAttribute("download", data[i].Name); 1857 docItemTitle.innerHTML = data[i].Name; 1858 configureDownloadLink(docItemTitle, data[i]); 1859 titleUser.appendChild(docItemTitle); 1860 1861 var uploader = document.createElement("div"); 1862 uploader.className = "item uploader"; 1863 uploader.textContent = userString; 1864 titleUser.appendChild(uploader); 1865 1866 if (data[i].ParentName.length > 0) { 1867 var docBread = document.createElement("div"); 1868 docBread.className = "item docBread"; 1869 docBread.innerHTML = `<strong>Folder:</strong> ... / ${data[i].ParentName}`; 1870 titleUser.appendChild(docBread); 1871 } 1872 1873 displayTable.appendChild(titleUser); 1874 1875 var sizeTime = document.createElement("div"); 1876 sizeTime.className = "sizeTime"; 1877 1878 var docSize = document.createElement("div"); 1879 docSize.className = "item docSize"; 1880 if (data[i].Type === "content_folder") { 1881 docSize.textContent = data[i].ChildrenCount + res["Items"]; 1882 } else { 1883 docSize.textContent = data[i].Type === "content_extlink" ? "" : sizeString; 1884 } 1885 sizeTime.appendChild(docSize); 1886 1887 if (data[i].Type !== "content_folder") { 1888 var docDate = document.createElement("div"); 1889 docDate.className = "item docDate"; 1890 docDate.innerHTML = dateString; 1891 sizeTime.appendChild(docDate); 1892 } 1893 1894 displayTable.appendChild(sizeTime); 1895 documentDetailsToggle.appendChild(displayTable); 1896 dataRow.appendChild(documentDetailsToggle); 1897 1898 var documentDetails = document.createElement("div"); 1899 documentDetails.className = "documentDetails"; 1900 documentDetails.setAttribute("aria-haspopup", "true"); 1901 1902 if (data[i].Description && data[i].canRead) { 1903 var fileDescription = document.createElement("div"); 1904 fileDescription.className = "fileDescription"; 1905 fileDescription.textContent = data[i].Description; 1906 documentDetails.appendChild(fileDescription); 1907 } 1908 1909 dataRow.appendChild(documentDetails); 1910 1911 var downloadButton = document.createElement("a"); 1912 downloadButton.className = "downloadButton folderSettingsToggle"; 1913 downloadButton.setAttribute("aria-label", "toggle options"); 1914 downloadButton.setAttribute("data", data[i].ObjectId); 1915 downloadButton.setAttribute("href", "#"); 1916 downloadButton.setAttribute("title", res["ItemDetails"] + " '" + data[i].Name + "'"); 1917 1918 var bulletButton = document.createElement("div"); 1919 bulletButton.className = "displayTable"; 1920 var bulletSpan = document.createElement("div"); 1921 bulletSpan.className = "bulletButton"; 1922 bulletSpan.innerHTML = "<span>â¢â¢â¢</span>"; 1923 bulletButton.appendChild(bulletSpan); 1924 downloadButton.appendChild(bulletButton); 1925 1926 dataRow.appendChild(downloadButton); 1927 } 1928 } 1929 1930 $(dataRow).find("div.documentDetails").prepend(setDetailRow(data[i])); 1931 ctrl.append(dataRow); 1932 } 1933 } 1934 showPageStatus(iPage, data, pagesize); 1935 1936 //Show description div 1937 $(mainContainer + " a.dataRowItem, " + mainContainer + " a.content_extlink, " + mainContainer + " a.workspace_chat, " + mainContainer + " a.folderSettingsToggle").off(); 1938 $(mainContainer + " a.folderSettingsToggle").on("click", function (event) { 1939 //$(mainContainer + " a.dataRowItem").off(); 1940 //$(mainContainer + " a.dataRowItem").on("click", function (event) { 1941 event.preventDefault(); 1942 var currentItem = $(this); 1943 var parentLi = currentItem.parent("li"); 1944 _activeObject = currentItem; 1945 var id = currentItem.attr("data"); 1946 _activeItem = id; 1947 hideOtherRows(id); 1948 if (parentLi.find(".documentDetails").first().is(":visible")) { 1949 parentLi.find(".documentDetails").hide(); 1950 parentLi.find("a").first().focus(); 1951 listSelector.find("li").removeClass("notCurrentDocument"); 1952 } 1953 else { 1954 parentLi.addClass("focus"); 1955 parentLi.removeClass("notCurrentDocument"); 1956 parentLi.find(".documentDetails").show(); 1957 parentLi.find("a").first().focus(); 1958 parentLi.find("a.copyLink").focus(); 1959 } 1960 }); 1961 1962 1963 $(mainContainer + " a.dataRowItem").off(); 1964 $(mainContainer + " a.dataRowItem").on("click", function (event) { 1965 event.preventDefault(); 1966 var currentItem = $(this); 1967 _activeObject = currentItem; 1968 var id = currentItem.attr("data"); 1969 _activeItem = id; 1970 if (!hideOtherRows(id)) { 1971 var type = currentItem.attr("data-type") 1972 switch (type) { 1973 case "content_folder": 1974 openFolder(currentItem, event); 1975 break; 1976 case "content_item": 1977 case "content_extlink": 1978 window.open(currentItem.attr("href"), '_blank'); 1979 break; 1980 } 1981 } 1982 }); 1983 1984 $(mainContainer + " .CMS_input").off(); 1985 $(mainContainer + " .CMS_input").on("change", function (event) { 1986 event.preventDefault(); 1987 var currentItem = $(this); 1988 onItemChanged(currentItem); 1989 }); 1990 1991 var onItemChanged = function (element) { 1992 var dataid = $(element).attr("data"); 1993 if ($(element).attr("checked") === "checked") { 1994 // only add if it's not already in the list 1995 if (selectedItems.indexOf(dataid) === -1) { 1996 selectedItems.push(dataid); 1997 } 1998 } 1999 else { 2000 var index = selectedItems.indexOf(dataid); 2001 selectedItems.splice(index, 1); 2002 } 2003 2004 }; 2005 2006 function openFolder(element, event) { 2007 event.preventDefault(); 2008 var objId = parseInt($(element).attr("data")); 2009 clearControls(); 2010 _activeItem = objId; 2011 _activeObject = $(element); 2012 _back.push(_rootObject); 2013 _history.push(getCurrentObject()); 2014 currentO.History = _history;
2015 2016 var childItemListUi = new ContentItemListUI(objId, currentO, null, _params, selectMultiSwitch, selectedItems); 2017 $.when(childItemListUi.initialise(null)).then(function () { 2018 showListfocus(); 2019 showCurrentItem(); 2020 }); 2021 return false; 2022 } 2023 2024 //Activity modal 2025 $(mainContainer + " a.actitem").off(); 2026 $(mainContainer + " a.actitem").on("click", function (e) { 2027 e.preventDefault(); 2028 _activeObject = $(this); 2029 var type = $(this).attr("data-item"); 2030 var name = $(this).attr("data-name"); 2031 var id = $(this).attr("data-id"); 2032 _activeItem = id; 2033 displayActivityModal(id, name); 2034 return false; 2035 }); 2036 2037 2038 //Move Item 2039 $(mainContainer + " a.moveitem").off(); 2040 $(mainContainer + " a.moveitem").on("click", function (e) { 2041 e.preventDefault(); 2042 _activeObject = $(this); 2043 var type = $(this).attr("data-item"); 2044 var name = $(this).attr("data-name"); 2045 var id = $(this).attr("data-id"); 2046 var locationFolderId = $(this).attr("locationFolderId"); 2047 _activeItem = id; 2048 displayMoveModal(_contextId, { "Id": id, "Name": name, "parentId": _contextId, "locationFolderId": locationFolderId }); 2049 return false; 2050 }); 2051 2052 //Delete Item 2053 $(mainContainer + " a.deleteitem").off(); 2054 $(mainContainer + " a.deleteitem").on("click", function (e) { 2055 e.preventDefault(); 2056 var type = $(this).attr("data-item"); 2057 var name = $(this).attr("data-name"); 2058 var id = $(this).attr("data-id"); 2059 _activeItem = id; 2060 _activeObject = $(this); 2061 switch (type) { 2062 case "content_folder": 2063 var contentItemFolder = new ContentItemFolder(getCurrentObject(), _contextId, { "Id": id }); 2064 contentItemFolder.DeleteFolder(name); 2065 2066 break; 2067 case "content_extlink": 2068 var contentItemLink = new ContentItemLink(getCurrentObject(), _contextId, { "Id": id }); 2069 contentItemLink.DeleteLink(name); 2070 break; 2071 case "content_item": 2072 case "workspace_chat": 2073 var contentItemfile = new ContentItemFile(getCurrentObject(), _contextId, { "Id": id }, { "maxSize": _settings.Settings.MaximumSize, "allowedExts": _settings.Settings.AllowedExts }); 2074 contentItemfile.DeleteFile(name); 2075 break; 2076 } 2077 return false; 2078 }); 2079 2080 //EditIten 2081 $(mainContainer + " a.edititem").off(); 2082 $(mainContainer + " a.edititem").on("click", function (e) { 2083 e.preventDefault(); 2084 var type = $(this).attr("data-item"); 2085 var name = $(this).attr("data-name"); 2086 var id = $(this).attr("data-id"); 2087 _activeItem = id; 2088 _activeObject = $(this); 2089 switch (type) { 2090 case "content_folder": 2091 displayUpsertFolderModal(_contextId, { "Id": id }); 2092 break; 2093 case "content_item": 2094 displayUpsertFileModal(_contextId, { "Id": id }); 2095 break; 2096 case "content_extlink": 2097 displayUpsertLinkModal(_contextId, { "Id": id }); 2098 break; 2099 } 2100 return false; 2101 }); 2102 2103 //File Props 2104 $(mainContainer + " a.propitem").off(); 2105 $(mainContainer + " a.propitem").on("click", function (e) { 2106 e.preventDefault(); 2107 _activeObject = $(this); 2108 var type = $(this).attr("data-item"); 2109 var name = $(this).attr("data-name"); 2110 var id = $(this).attr("data-id"); 2111 var canC = $(this).attr("data-create"); 2112 var canDel = $(this).attr("data-del"); 2113 var canAdm = $(this).attr("data-adm"); 2114 _activeItem = id; 2115 switch (type) { 2116 case "content_item": 2117 displayFilePropModal(_contextId, { "Id": id, "canCreate": canC, "canDelete": canDel, "isAdmin": canAdm }); 2118 break; 2119 } 2120 }); 2121 $(mainContainer + " a.copyLink").off(); 2122 $(mainContainer + " a.copyLink").on("click", function (e) { 2123 e.preventDefault(); 2124 }); 2125 if (showSubscription) { 2126 $(mainContainer + " a.subscriptionitem").on("click", function (e) { 2127 //if (_permit.IsAdmin) { 2128 e.preventDefault(); 2129 _activeObject = $(this); 2130 var type = $(this).attr("data-item"); 2131 var name = $(this).attr("data-name"); 2132 var id = $(this).attr("data-id"); 2133 _activeItem = id; 2134 displaySubscriptionModal(_contextId, { "Id": id, "Name": name }); 2135 //} 2136 //else { 2137 // //Add redirect to alert window 2138 //} 2139 }); 2140 } 2141 if (_permit.CanWrite) { 2142 var dragandrophandler = $(mainContainer + " .documentList li"); 2143 dragandrophandler.off("dragstart"); 2144 dragandrophandler.on("dragstart", function (e, ui) { 2145 _activeObject = $(e.currentTarget); 2146 _activeItem = _activeObject.attr("data"); 2147 //e.stopPropagation(); 2148 //e.preventDefault(); 2149 2150 }); 2151 dragandrophandler.off("dragenter"); 2152 dragandrophandler.on('dragenter', function (e) { 2153 e.stopPropagation(); 2154 e.preventDefault(); 2155 $(e.currentTarget).find("a").first().focus(); 2156 if (!$(e.currentTarget).hasClass("folder") && !$(e.currentTarget).hasClass("subfolder")) { 2157 e.cancel = true; 2158 } 2159 //$(this).css('border', '2px solid #0B85A1'); 2160 }); 2161 dragandrophandler.off("dragover"); 2162 dragandrophandler.on('dragover', function (e) { 2163 e.stopPropagation(); 2164 e.preventDefault(); 2165 if (!$(e.currentTarget).hasClass("folder") && !$(e.currentTarget).hasClass("subfolder")) { 2166 e.cancel = true; 2167 } 2168 //e.cancel = !($(e.currentTarget).hasClass("folder") || $(e.currentTarget).hasClass("subfolder")); 2169 }); 2170 dragandrophandler.off("dragleave"); 2171 dragandrophandler.on('dragleave', function (e) { 2172 e.stopPropagation(); 2173 e.preventDefault(); 2174 if (!$(e.currentTarget).hasClass("folder") && !$(e.currentTarget).hasClass("subfolder")) { 2175 e.cancel = true; 2176 } 2177 //$(this).css('border', '2px solid #0B85A1'); 2178 }); 2179 dragandrophandler.off("drop"); 2180 dragandrophandler.on('drop', function (e) { 2181 e.preventDefault(); 2182 $(e.currentTarget).removeAttr("style"); 2183 if ($(e.currentTarget) && _activeObject && 2184 ($(e.currentTarget).hasClass("folder") || $(e.currentTarget).hasClass("subfolder"))) { 2185 var dropIn = $(e.currentTarget).find("a").first(); 2186 var type = _activeObject.find("a").first().attr("data-type"); 2187 var canWrite = dropIn.attr("data-write"); 2188 var name = _activeObject.find("a").first().find("div.docTitle").text(); 2189 var id = _activeObject.find("a").first().attr("data"); 2190 if (dropIn && canWrite) { 2191 if (canWrite === "true") { 2192 var destId = dropIn.attr("data"); 2193 //_activeItem = id; 2194 2195 //displayMoveModal(_contextId, { "Id": id, "Name": name, "parentId": _contextId }); 2196 var contentItemMove = new ContentItemMove(getCurrentObject(), id, { "Id": id, "Name": name, "parentId": _contextId }, null); 2197 if ($(e.currentTarget).hasClass("subfolder")) { 2198 destId = $(e.currentTarget).attr("parent-id"); 2199 if (destId !== id) 2200 contentItemMove.MoveObject($(e.currentTarget).attr("title").replace(res["ClickBack"], "").replace(/\'/g, ""), destId, id); 2201 } 2202 else { 2203 if (destId !== id) 2204 contentItemMove.MoveObject(dropIn.find(".docT
2204itle").html(), destId, id); 2205 } 2206 _activeObject = $(e.currentTarget); 2207 _activeItem = _activeObject.attr("data"); 2208 initialise(getCurrentObject()); 2209 contentItemMove = null; 2210 } 2211 else { 2212 commons.ShowErrorMessage(res["WritePermissionError"]); 2213 } 2214 } 2215 } 2216 }); 2217 } 2218 2219 ////Clipboard object 2220 var cb = new Clipboard(mainContainer + " a.copyLink"); 2221 cb.off('success'); 2222 // Modify the Clipboard.js success event to include a custom property for the link ID 2223 cb.on('success', function (e) { 2224 // Add a custom property to the event object 2225 e.linkId = $(e.trigger).attr('data-id'); // Assuming the link ID is stored in the 'data-id' attribute of the trigger element 2226 e.clearSelection(); 2227 commons.ShowMsgConfigurable(res["copyMessage"], "", 20000000, $(e.trigger).attr("id")); 2228 setTimeout(function () { 2229 console.log("Link ID:", e.linkId); // Log the custom property for debugging 2230 showCurrentItem(); 2231 }, 1100); 2232 }); 2233 cb.off('error'); 2234 cb.on('error', function (e) { 2235 try { 2236 commons.ShowErrorMessage("Press Ctrl-C/Command+C to copy"); 2237 } 2238 catch (e) { 2239 //commons.ShowErrorMessage(e); 2240 } 2241 }); 2242 2243 showCurrentPage(); 2244 } 2245 2246 var GetFavoriteLink = function (isFav) { 2247 var favIcon = ""; 2248 if (isFav) 2249 favIcon = "<i class=\"fa fa-star\" ></i>"; 2250 return favIcon; 2251 }; 2252 //Append Paging and data row 2253 var appendPagerAndData = function (ctrl, data) { 2254 var pagerCtrl = $(pagerSelector); 2255 _lastPage = Math.ceil(data.length / _pagesize); 2256 2257 if (_currentPage >= _lastPage && _lastPage - 1 >= 0) { 2258 _currentPage = _lastPage - 1; 2259 } 2260 2261 if (data.length > 0) 2262 appendDataRow(listSelector, _currentPage, data, _pagesize); 2263 else 2264 showNoRecordsTemplate(listSelector); 2265 2266 removePager(pagerCtrl); 2267 2268 2269 2270 pagerCtrl.find("ul.PO-pageButton").append(addPageButton(_currentPage, _lastPage)); 2271 updateButton((noofpagebuttons * Math.floor(_currentPage / noofpagebuttons)) + 1, _lastPage); 2272 showPageStatus(_currentPage, data, _pagesize); 2273 showCurrentPage(); 2274 2275 $(mainContainer + " li a.pageButton").on("click", function (e) { 2276 e.preventDefault(); 2277 var tag = $(this).attr("tag"); 2278 if (tag === "-1") { 2279 _currentPage -= 1; 2280 } 2281 else if (tag === "+1") { 2282 if (_currentPage < _lastPage - 1) 2283 _currentPage += 1; 2284 } 2285 else { 2286 _currentPage = parseInt($(this).attr("tag")); 2287 $(this).focus(); 2288 } 2289 if (_currentPage < 0) _currentPage = 0; 2290 2291 2292 appendDataRow(listSelector, _currentPage, data, _pagesize); 2293 updateButton((noofpagebuttons * Math.floor(_currentPage / noofpagebuttons)) + 1, _lastPage); 2294 showCurrentPage(); 2295 2296 2297 }); 2298 $(mainContainer + " a.nextPrev").on("click", function (e) { 2299 e.preventDefault(); 2300 var id = $(this).attr("id"); 2301 //console.log("... clicked .. " + $(this).attr("tag")); 2302 var startPage = parseInt($(this).attr("tag")); 2303 2304 if (id === "next") 2305 startPage += (noofpagebuttons); 2306 else if (id === "prev") 2307 startPage -= (noofpagebuttons); 2308 if (startPage <= 0) startPage = 1; 2309 showCurrentPage(); 2310 updateButton(startPage, _lastPage); 2311 2312 }); 2313 2314 }; 2315 2316 var hideOtherRows = function (currentRow) { 2317 var hasFocusItem = false; 2318 $(mainContainer + " a.documentDetailsToggle").each(function (index, value) { 2319 if ($(value).attr("data") !== currentRow) { 2320 var parentContainer = $(value).parent(); 2321 if (parentContainer.hasClass("focus")) { 2322 hasFocusItem = true; 2323 } 2324 parentContainer.find(".documentDetails").hide(); 2325 parentContainer.removeClass("focus"); 2326 parentContainer.addClass("notCurrentDocument"); 2327 } 2328 }); 2329 return hasFocusItem; 2330 }; 2331 2332 2333 listSelector.off('focus'); 2334 listSelector.on('focus', 'li', function () { 2335 $(this).closest(mainContainer + " .documentList").scrollTop($(this).index() * $(this).outerHeight()); 2336 }).on('keydown', 'li', function (e) { 2337 if (e.keyCode === 40) { 2338 $(this).next("li").find("a").first().focus(); 2339 return false; 2340 } else if (e.keyCode === 38) { 2341 $(this).prev("li").find("a").first().focus(); 2342 return false; 2343 } 2344 }).find('li').first().focus(); 2345 2346 2347 return { 2348 initialise: initialise, 2349 historyObject: _historyObject, 2350 contextId: _contextId, 2351 currentPage: _currentPage, 2352 pagesize: _pagesize, 2353 searchVal: _searchVal, 2354 Sortcriteria: _sortcriteria, 2355 Root: _root, 2356 RootObject: _rootObject, 2357 Back: _back, 2358 History: _history, 2359 Params: _params, 2360 ActiveItem: _activeItem, 2361 ActiveObject: _activeObject, 2362 Access: _permit, 2363 ShowListfocus: showListfocus, 2364 SetHidDescription: setHidDescription, 2365 SetDescription: setDescription 2366 } 2367};
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.