{"version":3,"sources":["1initializers.js","navigator.js","ordering.js","selector.js","utility.js"],"names":["PJQ","modules","files","routes","app","addRoutes","views","FileNavigator","BaseView","extend","defaults","template","templating","Template","constants","FILES","subTemplates","file","fileMenu","isDeferred","sortBy","sortDirection","expandAllFolders","expandSharedFolders","foldersOnly","defaultEvents","click .btn-add-root-folder","click .attachment-link","click .attachment","dblclick .attachment","click .input-select-attachment","change .input-select-attachment","click .btn-share-selected","click .btn-download-selected","click .btn-cut-selected","click .btn-copy-selected","click .btn-delete-selected","click .btn-order-selected","click .btn-new-folder","click .btn-export-file-list","click .btn-upload-attachments-root","click .btn-upload-attachments","click .btn-download-attachment","click .btn-share-attachment","click .btn-order-attachment","click .btn-cut-attachment","click .btn-copy-attachment","click .btn-rename-attachment","click .btn-paste","click .btn-delete-attachment","click .btn-attachment-properties","dragenter .attachment","dragleave .attachment","dragstart .attachment","dragover .attachment","drop .attachment","click .btn-file-menu","click .col-label","beforeInit","this","expandedFolders","selectedAttachmentIds","highlightedAttachmentIds","beforeFirstRender","options","canAdd","session","hasPermission","canShare","preferences","hasPref","preferenceTypes","DISABLE_SHARE_PEI","isAdmin","fetchAttachments","getMenuActions","self","name","onClick","attachment","addFolder","isShown","get","uploadToFolder","downloadAttachments","FileViewer","model","toLowerCase","endsWith","order","shareAttachments","exportFileList","cutAttachments","copyAttachments","paste","clipboard","attachmentProperties","renameAttachment","isDanger","deleteAttachments","isFetched","collection","setAllExpanded","_","each","models","indexOf","cid","getDepth","push","arguments","length","undefined","isShared","isPrivate","project","forShare","bind","attachments","$","remove","_this$expandedFolders","sharedFolder","findWhere","entryId","apply","_toConsumableArray","map","getFolderAttachments","folder","listenTo","renderAttachments","render","collections","Files","fetch","success","renderData","afterRender","sortAttachments","result","sort","a","b","getSize","helpers","sortHelpers","sortAlphaNum","aso","bso","toString","reverse","$container","rootAttachments","filter","getParentFolder","find","data","size","empty","renderAttachment","initContextMenu","depth","folderAttachments","renderSubTemplate","isSelected","isExpanded","$folder","$files","first","folderAttachment","renderContextMenu","e","$target","currentTarget","$menu","closest","$attachment","parseInt","menus","ContextMenu","el","selector","actions","fetchElementData","element","onOpen","getAttachmentElement","addClass","onClose","removeClass","changeSort","newSort","parent","$aNav","attachmentLinkClicked","stopPropagation","expandFolder","orderSettings","isDisableDownload","downloadPerFileFee","FILE_NAVIGATOR_VIEW_ON_CLICK","attachmentClicked","attachmentDblClicked","attachmentChecked","isChecked","prop","attachmentIds","siblings","addSelectedAttachmentIds","removeSelectedAttachmentIds","union","selectedAttachmentsChanged","difference","selectedCount","html","selectedAttachments","expandOnly","$attachments","is","fnExpand","animateCSS","css","background","fnRender","hasClass","fetchFolderAttachments","add","addRootFolderClicked","NewFolderModal","File","isFolder","onSave","newFolder","addFolderClicked","uploadRootAttachmentsClicked","uploadToFolderClicked","FileUploaderModal","onDone","successFiles","fi","set","shareAttachmentClicked","shareSelected","shareAtt","fnCheck","att","objectHelpers","refinedType","sharingModal","sharing","SharingModal","share","notifications","notify","successNotify","message","urlChanged","callback","url","downloadAttachmentClicked","downloadSelected","downloadAll","replaceVersionFolders","isArray","versionFolders","versionFolder","_attachments","versionDrawings","hasDrawings","objType","id","uniq","IS_DOCUMENT_CLERK","ids","entryIds","folderAtt","CAN_ORDER_ON_ACCOUNT","drawings","OrderDownloadAdmin","OrderPrintsModal","mode","modes","DOWNLOAD","download","BaseModel","checkDownloadRequirements","copyAttachmentClicked","copySelected","copy","cutAttachmentClicked","cutSelected","cut","pasteClicked","destinationAttachment","isCopy","fileCount","pasteFunc","newAttachments","move","modals","YesNo","header","body","onYes","renameAttachmentClicked","RenameFileModal","deleteAttachmentClicked","deleteSelected","text","title","btnText","isDetach","DeleteCancel","deleteButtonText","onDelete","privateFolder","privateFolderId","fnCallback","detachFromProject","destroy","attachmentDragStart","draggedAttachment","target","attachmentDragOver","preventDefault","attachmentDragEnter","targetAttachment","lastDragOverAttachment","attachmentDragLeave","targetCid","attachmentDrop","orderSelected","fnOrder","orderAtt","selectedAttachment","fetchFoldersAttachments","recursive","orderAttachmentClicked","exportFileListClicked","attachmentPropertiesClicked","FilePropertiesModal","orderAttachments","hideFolders","BaseModal","width","events","keyup .input-name","click .btn-save","beforeRender","focus","nameChanged","keyCode","save","newName","val","getExtension","removeModal","click .btn-add","folderGuid","folderNameChanged","urlOptions","$folderName","folderName","folderNameValid","inputHelpers","setInputError","params","parameter","value","minWidth","maxWidth","isSelectRecipients","onOrderPlaced","PRINT","orderFolderSelector","orderCalculatedItems","change .input-select-recipients","click .btn-close","click .ordering-folder","click .select-file","click .order-jump-step","click .view-file","click .delete-recipient","click .edit-recipient","click .select-all-files","beforeModalCreated","ALT_PRINT","recipients","contact","user","createOrder","selectRecipientsChanged","Order","description","poNumber","notes","largeFormatBinding","ORDER_LARGE_FORMAT_BINDING_TYPE","getPref","largeFormatPaperType","ORDER_LARGE_FORMAT_PAPER_TYPE","largeFormatQuantity","ORDER_LARGE_FORMAT_PRINT_SIZE","ordering","paperSize","FULL","ORDER_LARGE_FORMAT_QUANTITY","smallFormatBinding","ORDER_SMALL_FORMAT_BINDING_TYPE","smallFormatQuantity","ORDER_SMALL_FORMAT_QUANTITY","smallFormatPaperType","ORDER_SMALL_FORMAT_PAPER_TYPE","halfSizeQuantity","HALF","cdQuantity","shippingSpeed","ORDER_DELIVER_BY","contacts","Contacts","Contact","notifyEmail","billingCompanyName","billingContactName","billingPhone","billingPhoneExtension","billingAddress1","billingAddress2","billingCity","billingState","billingZip","billingCountry","isDownload","price","ContactsSelectInput","context","contexts","PARTICIPANTS","CONTACTS","selectedContact","showSelectorAddress","isSingleChoice","onChange","selectedContacts","reset","statePicker","inputs","Selectpicker","noneSelectedText","defaultValue","toUpperCase","countryChanged","setValue","inputMaskPhone","FileSelectInput","selectedFiles","ignoreFolders","selectorOptions","confirmButton","isShowChangeButton","calculateCost","goToStep","renderFolderPicker","renderAddressBook","Binder","$el","Loader","deleteRecipient","contactId","editRecipient","BaseEditContactModal","selectAllFiles","fileSelects","selectedFolderFiles","without","attr","viewFile","filesTable","getRow","isImage","view","renderPhotoViewer","canDownload","canDelete","canRender","selectedFolder","folders","isSecondLevel","templateData","renderFilesTable","forceRecursive","addressBookView","addressbook","AddressBook","selectionMode","addressBook","ADD_TO_PROJECT","disabledContacts","disabledContactGroups","onSelection","contactsAll","contactsNoGroup","contactGroups","selectedRecipients","dataTables","DataTable","rowId","language","zeroRecords","pageLength","onRowDoubleClick","row","columns","columnData","orderable","searchable","renderFileSelect","type","selectFolder","manageSelectAllButtonState","fileSelectChanged","tr","country","states","state","abbreviation","refresh","inputMaskZip","isSelectAll","step","thisStep","thisStepHeader","not","collapse","isOnline","beforeSave","endpoint","ajax","Request","urlHelpers","generateEndpoint","attributes","post","done","renderCalculatedTotals","total","fail","xhr","err","orders","onCancel","hasError","ORDER_PO_REQUIRED","$po","$company","$contact","$address1","$city","$zip","$state","$country","$email","$phone","$filesError","errorAlert","Alert","orderType","window","location","href","origin","idAttribute","parse","drawingId","toJSON","FileSelector","fitHeight","selectedEntryIds","selectedDrawingIds","disabledAttachmentIds","noop","click .attachment-folder","click .btn-cancel","opts","selAtt","atts","isDisabled","folderClicked","_this$selectedAttachm","click .btn-download"],"mappings":"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","file":"app.js","sourcesContent":["PJQ.modules.files = {\n\troutes: [],\n};\n\nPJQ.app.addRoutes(PJQ.modules.files.routes);","PJQ.views.files.FileNavigator = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.FILES, 'File-Navigator'),\n subTemplates: {\n file: new PJQ.templating.Template(PJQ.constants.modules.FILES, 'File'),\n fileMenu: new PJQ.templating.Template(PJQ.constants.modules.FILES, 'File-Menu')\n },\n isDeferred: true,\n sortBy: 'name',\n sortDirection: 'asc',\n expandAllFolders: false,\n expandSharedFolders: false,\n foldersOnly: false\n },\n defaultEvents: {\n 'click .btn-add-root-folder': 'addRootFolderClicked',\n 'click .attachment-link': 'attachmentLinkClicked',\n 'click .attachment': 'attachmentClicked',\n 'dblclick .attachment': 'attachmentDblClicked',\n 'click .input-select-attachment': 'stopPropagation',\n 'change .input-select-attachment': 'attachmentChecked',\n 'click .btn-share-selected': 'shareSelected',\n 'click .btn-download-selected': 'downloadSelected',\n 'click .btn-cut-selected': 'cutSelected',\n 'click .btn-copy-selected': 'copySelected',\n 'click .btn-delete-selected': 'deleteSelected',\n 'click .btn-order-selected': 'orderSelected',\n 'click .btn-new-folder': 'addFolderClicked',\n 'click .btn-export-file-list': 'exportFileListClicked',\n 'click .btn-upload-attachments-root': 'uploadRootAttachmentsClicked',\n 'click .btn-upload-attachments': 'uploadToFolderClicked',\n 'click .btn-download-attachment': 'downloadAttachmentClicked',\n 'click .btn-share-attachment': 'shareAttachmentClicked',\n 'click .btn-order-attachment': 'orderAttachmentClicked',\n 'click .btn-cut-attachment': 'cutAttachmentClicked',\n 'click .btn-copy-attachment': 'copyAttachmentClicked',\n 'click .btn-rename-attachment': 'renameAttachmentClicked',\n 'click .btn-paste': 'pasteClicked',\n 'click .btn-delete-attachment': 'deleteAttachmentClicked',\n 'click .btn-attachment-properties': 'attachmentPropertiesClicked',\n 'dragenter .attachment': 'attachmentDragEnter',\n 'dragleave .attachment': 'attachmentDragLeave',\n 'dragstart .attachment': 'attachmentDragStart',\n 'dragover .attachment': 'attachmentDragOver',\n 'drop .attachment': 'attachmentDrop',\n 'click .btn-file-menu': 'renderContextMenu',\n 'click .col-label': 'changeSort'\n },\n beforeInit: function () {\n this.expandedFolders = [];\n this.selectedAttachmentIds = [];\n this.highlightedAttachmentIds = [];\n },\n beforeFirstRender: function () {\n this.options.canAdd = PJQ.app.session.hasPermission('documents.canAdd');\n this.options.canShare = PJQ.app.session.hasPermission('documents.canShare') && !PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_SHARE_PEI);\n this.options.isAdmin = PJQ.app.session.hasPermission('documents.isAdmin');\n this.fetchAttachments();\n },\n getMenuActions: function () {\n let self = this;\n return [\n {\n name: 'New Folder',\n onClick: function (attachment) {\n self.addFolder(attachment);\n },\n isShown: function (attachment) {\n return self.options.isAdmin && attachment.get('isFolder');\n }\n },\n {\n name: 'Upload',\n onClick: function (attachment) {\n self.uploadToFolder(attachment);\n },\n isShown: function (attachment) {\n return self.options.canAdd && attachment.get('entryId') > 0 && attachment.get('isFolder');\n }\n },\n {\n name: 'Download',\n onClick: function (attachment) {\n self.downloadAttachments(attachment);\n }\n },\n {\n name: 'View',\n onClick: function (attachment) {\n new PJQ.views.files.FileViewer({\n model: attachment\n });\n },\n isShown: function (attachment) {\n return attachment.get('name').toLowerCase().endsWith('.pdf');\n }\n },\n {\n name: 'Order',\n onClick: function (attachment) {\n self.order(attachment);\n }\n },\n {\n name: 'Share',\n onClick: function (attachment) {\n self.shareAttachments(attachment);\n },\n isShown: function () {\n return self.options.canShare;\n }\n },\n {\n name: 'Export File List',\n onClick: function (attachment) {\n self.exportFileList(attachment);\n },\n isShown: function (attachment) {\n return attachment.get('entryId') > 0 && attachment.get('isFolder');\n }\n },\n {\n name: 'Cut',\n onClick: function (attachment) {\n self.cutAttachments(attachment);\n },\n isShown: function (attachment) {\n return self.options.isAdmin && attachment.get('entryId') > 0;\n }\n },\n {\n name: 'Copy',\n onClick: function (attachment) {\n self.copyAttachments(attachment);\n },\n isShown: function (attachment) {\n return self.options.isAdmin && attachment.get('entryId') > 0;\n }\n },\n {\n name: 'Paste',\n onClick: function (attachment) {\n self.paste(attachment);\n },\n isShown: function (attachment) {\n return self.options.isAdmin && attachment.get('entryId') > 0\n && attachment.get('isFolder') && self.clipboard != null;\n }\n },\n {\n name: 'Properties',\n onClick: function (attachment) {\n self.attachmentProperties(attachment);\n },\n isShown: function (attachment) {\n return !attachment.get('isDrawing') && self.options.isAdmin && attachment.get('entryId') > 0;\n }\n },\n {\n name: 'Rename',\n onClick: function (attachment) {\n self.renameAttachment(attachment);\n },\n isShown: function (attachment) {\n return self.options.isAdmin && attachment.get('entryId') > 0;\n }\n },\n {\n name: 'Delete',\n isDanger: true,\n onClick: function (attachment) {\n self.deleteAttachments(attachment);\n },\n isShown: function (attachment) {\n return self.options.isAdmin && attachment.get('entryId') > 0 && attachment.get('folderId') > 0;\n }\n }\n ];\n },\n isFetched: function () {\n return this.collection != null && this.collection.isFetched;\n },\n setAllExpanded: function () {\n _.each(this.collection.models, function (attachment) {\n if (this.expandedFolders.indexOf(attachment.cid) === -1 && attachment.get('isFolder') && ((!attachment.get('isDrawing') && attachment.getDepth() <= 1) || attachment.getDepth() <= 0)) {\n this.expandedFolders.push(attachment.cid);\n }\n }, this);\n },\n fetchAttachments: function (options = {isShared: true, isPrivate: true}) {\n if (this.options.project != null && this.options.forShare !== true) {\n this.options.project.fetchAttachments(options, _.bind(function (attachments) {\n this.options.isDeferred = attachments.options.isDeferred;\n if (this.options.isDeferred) {\n this.$('.ct-selected-attachments').remove();\n }\n\n this.collection = attachments;\n if (this.options.expandAllFolders) {\n this.setAllExpanded();\n } else if (this.options.expandSharedFolders) {\n let sharedFolder = this.collection.findWhere({entryId: -1});\n if (sharedFolder != null) {\n this.expandedFolders.push(sharedFolder.cid);\n this.expandedFolders.push(..._.map(sharedFolder.getFolderAttachments(), function (folder) {\n return folder.cid;\n }));\n }\n }\n\n this.listenTo(this.collection, 'fetch update', this.renderAttachments);\n this.render();\n }, this));\n } else {\n if (this.collection == null) {\n this.collection = new PJQ.collections.files.Files();\n this.collection.fetch({\n success: _.bind(function () {\n if (this.options.expandAllFolders) {\n this.setAllExpanded();\n }\n this.render();\n this.listenTo(this.collection, 'fetch update', this.renderAttachments);\n }, this)\n });\n } else {\n this.listenTo(this.collection, 'fetch update', this.renderAttachments);\n this.collection.isFetched = true;\n this.renderAttachments();\n }\n }\n },\n renderData: function () {\n return {\n collection: this.collection,\n canAdd: this.options.canAdd,\n canShare: this.options.canShare,\n isAdmin: this.options.isAdmin,\n isFetched: this.isFetched(),\n isDeferred: this.options.isDeferred\n };\n },\n afterRender: function () {\n if (this.isFetched()) {\n this.renderAttachments();\n }\n },\n sortAttachments: function (attachments) {\n let self = this,\n result = attachments.sort(function (a, b) {\n if (self.options.sortBy === \"size\") {\n return a.getSize() > b.getSize() ? 1 : -1;\n } else if (self.options.sortBy === \"modifiedOn\") {\n return PJQ.helpers.sortHelpers.sortAlphaNum(a.get('modifiedOn'), b.get('modifiedOn'));\n } else {\n let aso = a.get('sortOrder'),\n bso = b.get('sortOrder');\n return PJQ.helpers.sortHelpers.sortAlphaNum(aso != null ? aso.toString() : a.get('name'), bso != null ? bso.toString() : b.get('name'));\n }\n });\n return this.options.sortDirection === 'desc' ? result.reverse() : result;\n },\n renderAttachments: function () {\n if (this.options.sortBy == null) {\n this.options.sortBy = \"name\";\n }\n\n let $container = this.$('.attachments-nav'),\n rootAttachments = _.filter(this.collection.models, function (attachment) {\n return attachment.getParentFolder() == null;\n });\n\n if (this.options.project == null) {\n rootAttachments = this.sortAttachments(rootAttachments);\n } else {\n rootAttachments = _.sortBy(rootAttachments, function (attachment) {\n switch (attachment.get('name').toLowerCase()) {\n case 'drawings':\n return 1;\n case 'shared':\n return 2;\n case 'attachments':\n return 3;\n case 'private':\n return 4;\n case 'mall':\n return 5;\n default:\n return 0;\n }\n });\n }\n\n let self = this;\n $container.find('.attachment-folder.expanded').each(function () {\n let cid = $(this).data('cid');\n if (self.expandedFolders.indexOf(cid)) {\n self.expandedFolders.push(cid);\n }\n });\n if (_.size(rootAttachments) > 0) {\n $container.empty();\n //render folders first\n _.each(_.filter(rootAttachments, function (attachment) {\n return attachment.get('isFolder');\n }), function (attachment) {\n this.renderAttachment($container, attachment);\n }, this);\n //render files last\n _.each(_.filter(rootAttachments, function (attachment) {\n return !attachment.get('isFolder');\n }), function (attachment) {\n this.renderAttachment($container, attachment);\n }, this);\n this.initContextMenu();\n }\n },\n renderAttachment: function ($container, attachment, depth = 0) {\n let folderAttachments = this.sortAttachments(attachment.getFolderAttachments());\n this.renderSubTemplate(true, this.options.subTemplates.file, $container, {\n model: attachment,\n isDeferred: this.options.isDeferred,\n options: this.options,\n isAdmin: this.options.isAdmin,\n canAdd: this.options.canAdd,\n isSelected: this.selectedAttachmentIds.indexOf(attachment.cid) !== -1,\n isExpanded: this.expandedFolders.indexOf(attachment.cid) !== -1,\n depth: depth\n }, _.bind(function ($folder) {\n if (attachment.get('isFolder')) {\n depth++;\n let $files = $folder.find('.attachment-files').first();\n _.each(_.filter(folderAttachments, function (attachment) {\n return attachment.get('isFolder');\n }), function (folderAttachment) {\n this.renderAttachment($files, folderAttachment, depth);\n }, this);\n\n _.each(_.filter(folderAttachments, function (attachment) {\n return !attachment.get('isFolder');\n }), function (folderAttachment) {\n this.renderAttachment($files, folderAttachment, depth);\n }, this);\n }\n }, this));\n },\n renderContextMenu: function (e) {\n let $target = $(e.currentTarget),\n $menu = $target.closest('.btn-group').find('.dropdown-menu'),\n $attachment = $target.closest('.attachment'),\n attachment = this.collection.get($attachment.data('cid')),\n depth = parseInt($attachment.data('depth'));\n this.renderSubTemplate(true, this.options.subTemplates.fileMenu, $menu, {\n model: attachment,\n depth: depth,\n clipboard: this.clipboard,\n foldersOnly: this.options.foldersOnly,\n canShare: this.options.canShare,\n isAdmin: this.options.isAdmin,\n canAdd: this.options.canAdd,\n });\n },\n initContextMenu: function () {\n let $container = this.$('.attachments-nav');\n new PJQ.menus.ContextMenu({\n el: $container,\n selector: '.attachment',\n actions: this.getMenuActions(),\n fetchElementData: _.bind(function (element) {\n return this.collection.get($(element).data('cid'));\n }, this),\n onOpen: _.bind(function (attachment) {\n this.getAttachmentElement(attachment).addClass('context-attachment');\n }, this),\n onClose: _.bind(function () {\n this.$('.context-attachment').removeClass('context-attachment');\n }, this)\n });\n },\n changeSort: function (e) {\n let $target = $(e.currentTarget),\n newSort = $target.data('attr');\n if (newSort !== this.options.sortBy || this.options.sortDirection === 'desc') {\n this.options.sortDirection = 'asc';\n } else {\n this.options.sortDirection = 'desc';\n }\n this.options.sortBy = newSort;\n\n this.$('.fa-long-arrow-up,.fa-long-arrow-down').removeClass('active');\n if (this.options.sortDirection === 'asc') {\n $target.parent('div').find('.fa-long-arrow-down').addClass('active');\n } else {\n $target.parent('div').find('.fa-long-arrow-up').addClass('active');\n }\n\n this.renderAttachments();\n },\n getAttachmentElement: function (attachment) {\n let $aNav = this.$('.attachments-nav');\n if (attachment.cid === -1) {\n return $aNav;\n }\n return $aNav.find('.attachment[data-cid=\"' + attachment.cid + '\"]');\n },\n attachmentLinkClicked: function (e) {\n e.stopPropagation();\n\n let $attachment = $(e.currentTarget).closest('.attachment'),\n attachment = this.collection.get($attachment.data('cid'));\n if (attachment.get('isFolder')) {\n this.expandFolder($attachment);\n } else {\n if (this.options.project != null && this.options.project.orderSettings != null && this.options.project.orderSettings.get('downloadPerFileFee') > 0) {\n new PJQ.views.files.FileViewer({\n model: attachment,\n isDisableDownload: true\n });\n } else if (this.options.orderSettings != null && this.options.orderSettings.downloadPerFileFee > 0) {\n new PJQ.views.files.FileViewer({\n model: attachment,\n isDisableDownload: true\n });\n } else if (attachment.get('name').toLowerCase().endsWith('.pdf') && PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.FILE_NAVIGATOR_VIEW_ON_CLICK)) {\n new PJQ.views.files.FileViewer({\n model: attachment\n });\n } else {\n this.downloadAttachments(attachment);\n }\n }\n },\n attachmentClicked: function (e) {\n let $attachment = $(e.currentTarget).closest('.attachment'),\n attachment = this.collection.get($attachment.data('cid'));\n if (attachment.get('isFolder')) {\n this.expandFolder($attachment);\n }\n },\n attachmentDblClicked: function (e) {\n let $attachment = $(e.currentTarget),\n attachment = this.collection.get($attachment.data('cid'));\n if (attachment.get('isFolder')) {\n this.expandFolder($attachment);\n } else {\n if (this.options.project != null && this.options.project.orderSettings != null && this.options.project.orderSettings.get('downloadPerFileFee') > 0) {\n new PJQ.views.files.FileViewer({\n model: attachment,\n isDisableDownload: true\n });\n } else if (this.options.orderSettings != null && this.options.orderSettings.downloadPerFileFee > 0) {\n new PJQ.views.files.FileViewer({\n model: attachment,\n isDisableDownload: true\n });\n } else if (attachment.get('name').toLowerCase().endsWith('.pdf') && PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.FILE_NAVIGATOR_VIEW_ON_CLICK)) {\n new PJQ.views.files.FileViewer({\n model: attachment\n });\n } else {\n this.downloadAttachments(attachment);\n }\n }\n },\n attachmentChecked: function (e) {\n let $checkbox = $(e.currentTarget),\n $attachment = $checkbox.closest('.attachment'),\n attachment = this.collection.get($attachment.data('cid')),\n isChecked = $(e.currentTarget).prop('checked'),\n attachmentIds = [attachment.cid];\n\n if (attachment.get('isFolder')) {\n attachmentIds.push(..._.map(attachment.getFolderAttachments(true), function (folderAttachment) {\n return folderAttachment.cid;\n }));\n $attachment.siblings('.attachment-files-outer').find('.input-select-attachment').prop('checked', isChecked);\n }\n\n if (isChecked) {\n this.addSelectedAttachmentIds(attachmentIds);\n } else {\n let parent = attachment.getParentFolder();\n if (parent != null) {\n this.getAttachmentElement(parent).find('.input-select-attachment').prop('checked', false);\n attachmentIds.push(parent.cid);\n }\n this.$('.input-select-all').prop('checked', false);\n\n this.removeSelectedAttachmentIds(attachmentIds);\n }\n },\n addSelectedAttachmentIds: function (attachmentIds) {\n this.selectedAttachmentIds = _.union(this.selectedAttachmentIds, attachmentIds)\n this.selectedAttachmentsChanged();\n },\n removeSelectedAttachmentIds: function (attachmentIds) {\n this.selectedAttachmentIds = _.difference(this.selectedAttachmentIds, attachmentIds);\n this.selectedAttachmentsChanged();\n },\n selectedAttachmentsChanged: function () {\n let selectedCount = _.size(this.selectedAttachmentIds);\n this.$('.btn-download-selected,.btn-file-actions,.btn-order-selected,.btn-share-selected').prop('disabled', selectedCount === 0);\n\n if (!this.options.isDeferred) {\n this.$('.ct-selected-attachments').html(selectedCount);\n }\n\n let selectedAttachments = this.collection.get(this.selectedAttachmentIds);\n let hasDrawings = _.find(selectedAttachments, function (attachment) {\n return attachment.get('isDrawing');\n }) != null;\n if (hasDrawings) {\n this.$('.btn-add-selected-to-drawings,.btn-cut-selected,.btn-copy-selected,.btn-delete-selected').addClass('hidden');\n } else {\n this.$('.btn-add-selected-to-drawings,.btn-delete-selected').removeClass('hidden');\n\n let hasRootFolder = _.find(selectedAttachments, function (attachment) {\n return attachment.get('folderId') === -1 || !(attachment.get('entryId') > 0);\n }) != null;\n if (hasRootFolder) {\n this.$('.btn-cut-selected,.btn-copy-selected').addClass('hidden');\n } else {\n this.$('.btn-cut-selected,.btn-copy-selected').removeClass('hidden');\n }\n }\n },\n expandFolder: function ($folder, expandOnly = false) {\n let $attachments = $folder.siblings('.attachment-files-outer'),\n isExpanded = $attachments.is(':visible'),\n fnExpand = _.bind(function () {\n if (!isExpanded) {\n $folder.addClass('expanded');\n $attachments.animateCSS('slideDown');\n } else if (!expandOnly) {\n $attachments.animateCSS('slideUp', function () {\n $folder.css({\n background: ''\n });\n });\n $folder.removeClass('expanded');\n }\n }, this);\n let folder = this.collection.get($folder.data('cid'));\n if (this.options.isDeferred && !isExpanded && folder.get('entryId') > 0) {\n let fnRender = _.bind(function () {\n if (!$attachments.hasClass('fetched')) {\n $attachments.addClass('fetched');\n let $files = $attachments.find('.attachment-files').first(),\n folderAttachments = folder.getFolderAttachments();\n $files.empty();\n _.each(this.sortAttachments(_.filter(folderAttachments, function (attachment) {\n return attachment.get('isFolder');\n })), _.bind(function (attachment) {\n this.renderAttachment($files, attachment, attachment.getDepth());\n }, this));\n\n _.each(this.sortAttachments(_.filter(folderAttachments, function (attachment) {\n return !attachment.get('isFolder');\n })), _.bind(function (attachment) {\n this.renderAttachment($files, attachment, attachment.getDepth());\n }, this));\n }\n fnExpand();\n }, this);\n if (folder.isFetched) {\n fnRender();\n } else {\n folder.fetchFolderAttachments(null, _.bind(function (files) {\n if ((this.selectedAttachments != null && this.selectedAttachments.get(folder.cid) != null) || this.selectedAttachmentIds.indexOf(folder.cid) !== -1) {\n _.each(files, _.bind(function (file) {\n if (this.selectedAttachments != null) {\n this.selectedAttachments.add(file);\n } else {\n if (this.selectedAttachmentIds.indexOf(file.cid) === -1) {\n this.selectedAttachmentIds.push(file.cid)\n }\n }\n }, this));\n }\n fnRender();\n }, this));\n }\n } else {\n fnExpand();\n }\n },\n addRootFolderClicked: function () {\n new PJQ.views.files.NewFolderModal({\n folder: new PJQ.models.files.File({\n entryId: -1,\n isFolder: true\n }),\n project: this.options.project,\n onSave: _.bind(function (newFolder) {\n this.collection.add(newFolder);\n }, this)\n });\n },\n addFolderClicked: function (e) {\n let $folder = $(e.currentTarget).closest('.attachment'),\n folder = this.collection.get($folder.data('cid'));\n this.addFolder(folder);\n },\n addFolder: function (folder) {\n new PJQ.views.files.NewFolderModal({\n folder: folder,\n project: this.options.project,\n onSave: _.bind(function (newFolder) {\n this.collection.add(newFolder);\n }, this)\n });\n },\n uploadRootAttachmentsClicked: function () {\n this.uploadToFolder(new PJQ.models.files.File({\n entryId: -1,\n isFolder: true\n }));\n },\n uploadToFolderClicked: function (e) {\n let $folder = $(e.currentTarget).closest('.attachment'),\n folder = this.collection.get($folder.data('cid'));\n this.uploadToFolder(folder);\n },\n uploadToFolder: function (folder) {\n if (!folder.get('isFolder')) {\n return;\n }\n\n new PJQ.views.files.FileUploaderModal({\n project: this.options.project,\n folder: folder,\n onDone: _.bind(function (files) {\n let successFiles = [];\n _.each(files, function (file) {\n if (file.get('status') !== 'success' && !file.get('isFolder')) {\n return;\n }\n\n file.collection = null;\n if (null == _.find(files, function (fi) {\n return file.get('folderId') === fi.get('entryId');\n })) {\n file.set('folderId', folder.get('entryId'));\n }\n successFiles.push(file);\n });\n if (folder.get('entryId') === -1 || folder.isFetched || !this.options.isDeferred) {\n this.collection.add(successFiles);\n }\n if (folder.get('entryId') > 0) {\n this.expandFolder(this.getAttachmentElement(folder), true);\n }\n }, this)\n });\n },\n shareAttachmentClicked: function (e) {\n let $attachment = $(e.currentTarget).closest('.attachment'),\n attachment = this.collection.get($attachment.data('cid'));\n this.shareAttachments(attachment);\n },\n shareSelected: function () {\n this.shareAttachments(this.collection.get(this.selectedAttachmentIds));\n },\n shareAttachments: function (attachment) {\n let shareAtt = [],\n fnCheck = function (att) {\n if (att.get('entryId') === -1) {\n shareAtt.push(...att.getFolderAttachments());\n } else {\n shareAtt.push(att);\n }\n };\n if (PJQ.helpers.objectHelpers.refinedType(attachment) === 'array') {\n _.each(attachment, function (att) {\n fnCheck(att);\n });\n } else {\n fnCheck(attachment);\n }\n let files = new PJQ.collections.files.Files(shareAtt),\n sharingModal = new PJQ.views.sharing.SharingModal({\n onSave: _.bind(function (data) {\n files.share(data, null, _.bind(function (share) {\n PJQ.notifications.notify.successNotify({\n message: 'File share email sent'\n });\n }, this));\n }, this)\n });\n files.share(null, null, function (share) {\n let callback = _.bind(sharingModal.urlChanged, sharingModal);\n callback(share.url);\n });\n },\n downloadAttachmentClicked: function (e) {\n let $attachment = $(e.currentTarget).closest('.attachment'),\n attachment = this.collection.get($attachment.data('cid'));\n this.downloadAttachments(attachment);\n },\n downloadSelected: function () {\n this.downloadAttachments(this.collection.get(this.selectedAttachmentIds));\n },\n downloadAll: function () {\n this.downloadAttachments(this.collection.models);\n },\n replaceVersionFolders: function (attachments) {\n let isArray = PJQ.helpers.objectHelpers.refinedType(attachments) === 'array';\n if (isArray || (attachments.get('isFolder') && attachments.get('isDrawing'))) {\n let versionFolders = isArray ? _.filter(attachments, function (attachment) {\n return attachment.get('isFolder') && attachment.get('isDrawing');\n }) : [attachments];\n if (_.size(versionFolders) > 0) {\n if (!isArray) {\n attachments = [];\n }\n _.each(versionFolders, function (versionFolder) {\n let versionDrawings = this.collection.getFolderAttachments(versionFolder, true);\n attachments.push(...versionDrawings);\n }, this);\n\n attachments = attachments.filter(function (attachment) {\n return !attachment.get('isDrawing') || (!attachment.get('isFolder') && attachment.get('isDrawing'));\n });\n }\n }\n return attachments;\n },\n downloadAttachments: function (attachments, options) {\n attachments = this.replaceVersionFolders(attachments);\n\n let objType = PJQ.helpers.objectHelpers.refinedType(attachments),\n hasDrawings;\n if (objType === 'array') {\n hasDrawings = _.find(attachments, function (attachment) {\n return attachment.id < -1 && !attachment.get('isFolder');\n }) != null;\n attachments = _.uniq(attachments);\n } else if (objType === 'backboneCollection') {\n hasDrawings = _.find(attachments.models, function (attachment) {\n return attachment.id < -1 && !attachment.get('isFolder');\n }) != null;\n attachments = _.uniq(attachments);\n } else {\n hasDrawings = attachments.id < -1 && !attachments.get('isFolder');\n }\n\n if (this.options.project != null && (this.options.forShare !== true || hasDrawings)) {\n if (this.options.project.orderSettings == null && this.options.orderSettings != null)\n this.options.project.orderSettings = PJQ.helpers.objectHelpers.refinedType(this.options.orderSettings, true) === 'backboneModel' ? this.options.orderSettings : new PJQ.models.BaseModel(this.options.orderSettings);\n\n this.options.project.checkDownloadRequirements(_.bind(function () {\n if (!options)\n options = {project: this.options.project};\n\n if (!options.project)\n options.project = this.options.project;\n\n this.options.project.downloadAttachments(attachments, options);\n }, this));\n } else if (this.options.orderSettings != null && this.options.orderSettings.downloadPerFileFee > 0 && !PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.IS_DOCUMENT_CLERK)) {\n let ids = [],\n entryIds = [],\n objType = PJQ.helpers.objectHelpers.refinedType(attachments, true),\n fnCheck = function (att) {\n if (att.get('entryId') === -1) {\n ids.push(..._.map(att.getFolderAttachments(), function (folderAtt) {\n return folderAtt.id;\n }));\n\n _.each(att.getFolderAttachments(), function (folderAtt) {\n if (!folderAtt.get('isFolder')) {\n entryIds.push(folderAtt.get('isDrawing') ? folderAtt.get('drawingId') * -1 : folderAtt.get('entryId'));\n }\n });\n } else {\n ids.push(att.id);\n\n if (!att.get('isFolder')) {\n entryIds.push(att.get('isDrawing') ? att.get('drawingId') * -1 : att.get('entryId'));\n }\n\n }\n };\n if (objType === 'backboneCollection') {\n _.each(attachments.models, function (attachment) {\n fnCheck(attachment);\n });\n attachments = _.uniq(attachments);\n } else if (objType === 'array') {\n _.each(attachments, function (attachment) {\n fnCheck(attachment);\n });\n attachments = _.uniq(attachments);\n } else {\n fnCheck(attachments);\n }\n\n if (this.options.project != null && this.options.project.get('masterUserId') === PJQ.app.session.get('masterUserId') && (PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.CAN_ORDER_ON_ACCOUNT) || PJQ.app.session.hasPermission('documents.onAccount'))) {\n new PJQ.views.drawings.OrderDownloadAdmin({\n entryIds: entryIds,\n orderSettings: this.options.orderSettings\n });\n } else {\n new PJQ.views.files.OrderPrintsModal({\n mode: PJQ.constants.files.modes.DOWNLOAD,\n files: attachments,\n orderSettings: this.options.orderSettings,\n collection: (this.options.project == null && this.options.collection != null) ? this.options.collection : null,\n project: PJQ.app.session.project != null ? PJQ.app.session.project : this.options.project\n });\n }\n } else {\n if (objType === 'backboneCollection' || objType === 'array' || attachments.get('isFolder')) {\n new PJQ.collections.files.Files(attachments).download();\n } else {\n attachments.download();\n }\n }\n },\n copyAttachmentClicked: function (e) {\n let $attachment = $(e.currentTarget).closest('.attachment');\n this.copyAttachments($attachment.data('cid'));\n },\n copySelected: function () {\n this.copyAttachments(this.selectedAttachmentIds);\n },\n copyAttachments: function (attachments) {\n this.clipboard = {\n copy: PJQ.helpers.objectHelpers.refinedType(attachments) === 'array' ? attachments : [attachments]\n };\n },\n cutAttachmentClicked: function (e) {\n let $attachment = $(e.currentTarget).closest('.attachment');\n this.cutAttachments($attachment.data('cid'));\n },\n cutSelected: function () {\n this.cutAttachments(this.selectedAttachmentIds);\n },\n cutAttachments: function (attachments) {\n this.clipboard = {\n cut: PJQ.helpers.objectHelpers.refinedType(attachments) === 'array' ? attachments : [attachments]\n };\n },\n pasteClicked: function (e) {\n let $attachment = $(e.currentTarget).closest('.attachment'),\n attachment = this.collection.get($attachment.data('cid'));\n this.paste(attachment);\n },\n paste: function (destinationAttachment) {\n let isCopy = _.size(this.clipboard.copy) > 0,\n fileCount = isCopy ? _.size(this.clipboard.copy) : _.size(this.clipboard.cut),\n pasteFunc = _.bind(function () {\n if (isCopy) {\n destinationAttachment.copy(this.collection.get(this.clipboard.copy), {\n project: this.options.project\n }, _.bind(function (newAttachments) {\n if (_.size(newAttachments) > 0) {\n this.collection.add(newAttachments);\n }\n }, this));\n } else {\n destinationAttachment.move(this.collection.get(this.clipboard.cut), {\n project: this.options.project\n }, _.bind(function () {\n this.renderAttachments();\n }, this));\n }\n this.clipboard = null;\n this.selectedAttachmentIds = [];\n }, this);\n\n if (destinationAttachment.get('entryId') > 0) {\n pasteFunc();\n } else {\n new PJQ.views.modals.YesNo({\n header: (isCopy ? \"Copy\" : \"Move\") + \" File\" + (fileCount > 1 ? \"s\" : \"\"),\n body: \"You are \" + (isCopy ? \"copying\" : \"moving\") + (fileCount > 1 ? \" these files\" : \" this file\") + \" to the shared folder root, which will put them in the root of your document center. Are you sure you want to do this?\",\n onYes: function () {\n pasteFunc();\n }\n });\n }\n },\n renameAttachmentClicked: function (e) {\n let cid = $(e.currentTarget).closest('.attachment').data('cid');\n this.renameAttachment(this.collection.get(cid));\n },\n renameAttachment: function (attachment) {\n new PJQ.views.files.RenameFileModal({\n model: attachment,\n onSave: _.bind(function () {\n this.renderAttachments();\n }, this)\n });\n },\n deleteAttachmentClicked: function (e) {\n let cid = $(e.currentTarget).closest('.attachment').data('cid');\n this.deleteAttachments([this.collection.get(cid)]);\n },\n deleteSelected: function () {\n this.deleteAttachments(this.collection.get(this.selectedAttachmentIds));\n },\n deleteAttachments: function (attachments) {\n let text,\n title = \"Confirm Deletion\",\n btnText = \"Delete\",\n isArray = PJQ.helpers.objectHelpers.refinedType(attachments) === 'array',\n isDetach = false;\n if (!isArray && attachments.get('isFolder')) {\n if (attachments.get('folderId') === -1) {\n title = \"Detach Folder\";\n text = \"Are you sure you want to detach this folder from the project? It will not be deleted from your document center.\";\n btnText = \"Detach\";\n isDetach = true;\n } else {\n text = \"Are you sure you want to delete this folder?\";\n }\n } else if (_.size(attachments) > 1) {\n text = \"Are you sure you want to delete these files?\";\n } else {\n text = \"Are you sure you want to delete this file?\";\n }\n new PJQ.views.modals.DeleteCancel({\n header: title,\n body: text,\n deleteButtonText: btnText,\n onDelete: _.bind(function () {\n let privateFolder = _.find(this.collection.models, function(model) { return model.get('entryId') > 0 && model.get('folderId') === 0; }),\n privateFolderId = privateFolder ? privateFolder.get('entryId') : null,\n fnCallback = _.bind(function () {\n _.each(isArray ? attachments : [attachments], function (attachment) {\n if (attachment.get('isFolder')) {\n _.each(this.collection.getFolderAttachments(attachment, true), function (folderAttachment) {\n this.collection.remove(folderAttachment);\n }, this);\n }\n if (attachment.get('entryId') !== privateFolderId)\n this.collection.remove(attachment);\n else {\n this.removeSelectedAttachmentIds([privateFolderId]);\n this.$('.attachment-folder[data-cid=\"' + attachment.cid + '\"').find('.input-select-attachment').prop('checked', false);\n }\n }, this);\n }, this);\n if (isDetach) {\n //if it gets here, attachments is a single object, not an array\n attachments.detachFromProject(this.options.project, function () {\n fnCallback();\n });\n } else if (!isArray) {\n attachments.destroy();\n fnCallback();\n } else {\n let col = new PJQ.collections.files.Files(attachments);\n col.destroy(_.bind(function () {\n fnCallback();\n }, this));\n }\n }, this)\n });\n },\n attachmentDragStart: function (e) {\n this.draggedAttachment = this.collection.get($(e.target).data('cid'));\n },\n attachmentDragOver: function (e) {\n e.preventDefault();\n },\n attachmentDragEnter: function (e) {\n this.$('.drag-hover').removeClass('drag-hover');\n let $target = $(e.target).closest('.attachment-outer');\n if (_.size($target) > 0) {\n let $attachment = $target.find('.attachment').first(),\n targetAttachment = this.collection.get($attachment.data('cid'));\n if ($attachment.hasClass('attachment-folder') && this.draggedAttachment.cid !== targetAttachment.cid &&\n this.draggedAttachment.get('folderId') !== targetAttachment.get('entryId')) {\n this.lastDragOverAttachment = targetAttachment;\n $target.addClass('drag-hover');\n }\n }\n },\n attachmentDragLeave: function (e) {\n let $target = $(e.target).closest('.attachment-outer'),\n $attachment = $target.find('.attachment');\n if (_.size($target) > 0) {\n if ($attachment.hasClass('attachment-folder')) {\n let targetCid = $attachment.first().data('cid');\n if (this.lastDragOverAttachment == null || targetCid !== this.lastDragOverAttachment.cid) {\n $target.removeClass('drag-hover');\n }\n }\n }\n },\n attachmentDrop: function (e) {\n let $target = $(e.target).closest('.attachment-outer'),\n $attachment = $target.find('.attachment').first(),\n destinationAttachment = this.collection.get($attachment.data('cid'));\n if (this.draggedAttachment != null && destinationAttachment != null && destinationAttachment.get('isFolder') &&\n destinationAttachment.get('entryId') !== this.draggedAttachment.get('entryId') &&\n destinationAttachment.get('entryId') !== this.draggedAttachment.get('folderId') &&\n destinationAttachment.get('folderId') !== this.draggedAttachment.get('entryId')) {\n destinationAttachment.move([this.draggedAttachment], {\n project: this.options.project\n }, _.bind(function () {\n this.renderAttachments();\n }, this));\n this.draggedAttachment = null;\n }\n },\n orderSelected: function () {\n let callback = _.bind(function () {\n let selectedAttachments = this.collection.get(this.selectedAttachmentIds),\n fnOrder = _.bind(function () {\n let orderAtt = [];\n _.each(selectedAttachments, function (selectedAttachment) {\n if (selectedAttachment.get('isFolder')) {\n orderAtt.push(...selectedAttachment.getFolderAttachments(true));\n } else {\n orderAtt.push(selectedAttachment);\n }\n });\n this.order(orderAtt);\n }, this);\n if (this.options.isDeferred) {\n this.collection.fetchFoldersAttachments(selectedAttachments, {recursive: true}, _.bind(function () {\n fnOrder();\n }, this));\n } else {\n fnOrder();\n }\n }, this);\n\n if (PJQ.app.session.project && PJQ.app.session.project.get('status').toLowerCase() === 'busy') {\n new PJQ.views.modals.YesNo({\n header: \"Document(s) Processing\",\n body: \"Please Note: New documents are currently being processed for this project. Are you sure you want to place an order?\",\n onYes: _.bind(function () {\n callback();\n }, this)\n });\n } else\n callback();\n },\n orderAttachmentClicked: function (e) {\n let callback = _.bind(function () {\n let cid = $(e.currentTarget).closest('.attachment').data('cid');\n this.order(this.collection.get(cid));\n }, this);\n\n if (PJQ.app.session.project && PJQ.app.session.project.get('status').toLowerCase() === 'busy') {\n new PJQ.views.modals.YesNo({\n header: \"Document(s) Processing\",\n body: \"Please Note: New documents are currently being processed for this project. Are you sure you want to place an order?\",\n onYes: _.bind(function () {\n callback();\n }, this)\n });\n } else\n callback();\n\n },\n exportFileListClicked: function (e) {\n let cid = $(e.currentTarget).closest('.attachment').data('cid');\n this.exportFileList(this.collection.get(cid));\n },\n exportFileList: function (attachment) {\n attachment.exportFileList();\n },\n attachmentPropertiesClicked: function (e) {\n let cid = $(e.currentTarget).closest('.attachment').data('cid');\n this.attachmentProperties(this.collection.get(cid));\n },\n attachmentProperties: function (attachment) {\n attachment.fetchFolderAttachments({recursive: true}, _.bind(function () {\n new PJQ.views.files.FilePropertiesModal({\n model: attachment,\n project: this.options.project\n });\n }, this));\n },\n order: function (attachments) {\n if (PJQ.helpers.objectHelpers.refinedType(attachments) === 'object') {\n attachments = [attachments];\n }\n\n let self = this;\n let fnOrder = function () {\n let orderAttachments = [];\n _.each(attachments, function (attachment) {\n if (attachment.get('isFolder')) {\n orderAttachments.push(...attachment.getFolderAttachments(true, {hideFolders: true}));\n } else {\n orderAttachments.push(attachment);\n }\n });\n new PJQ.views.files.OrderPrintsModal({\n files: _.uniq(orderAttachments),\n collection: (self.options.project == null && self.options.collection != null) ? self.options.collection : null\n });\n };\n if (this.options.isDeferred && _.find(attachments, function (a) {\n return a.get('isFolder') && !a.isFetched;\n }) != null) {\n this.collection.fetchFoldersAttachments(attachments, {recursive: true}, function () {\n fnOrder();\n });\n } else {\n fnOrder();\n }\n }\n});\n\nPJQ.views.files.RenameFileModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.FILES, 'Modal-Rename-File'),\n width: '500px'\n },\n events: {\n 'keyup .input-name': 'nameChanged',\n 'click .btn-save': 'save'\n },\n beforeRender: function () {\n this.renderData = {\n model: this.model\n };\n },\n afterRender: function () {\n this.$('.input-name').focus();\n },\n nameChanged: function (e) {\n if (e.keyCode === 13) {\n this.save();\n }\n },\n save: function () {\n let newName = this.$('.input-name').val();\n if (!this.model.get('isFolder')) {\n newName += this.model.getExtension();\n }\n\n if (newName !== this.model.get('name')) {\n this.model.save({\n name: newName\n }, {\n success: _.bind(function () {\n if (typeof this.options.onSave === 'function') {\n this.options.onSave(this.model);\n }\n this.removeModal();\n }, this)\n });\n } else {\n this.removeModal();\n }\n }\n});\n\nPJQ.views.files.NewFolderModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.FILES, 'Modal-New-Folder'),\n width: '500px'\n },\n events: {\n 'keyup .input-name': 'folderNameChanged',\n 'click .btn-add': 'save'\n },\n beforeRender: function () {\n this.model = new PJQ.models.files.File({\n isFolder: true,\n folderGuid: this.options.folder.get('guid'),\n name: \"\"\n });\n this.renderData = {\n model: this.model\n };\n },\n afterRender: function () {\n this.$('.input-name').focus();\n },\n folderNameChanged: function (e) {\n if (e.keyCode === 13) {\n this.save();\n }\n },\n save: function () {\n let $folderName = this.$('.input-name'),\n folderName = this.$('.input-name').val(),\n folderNameValid = _.size(folderName) > 0;\n PJQ.helpers.inputHelpers.setInputError($folderName, folderNameValid);\n if (!folderNameValid) {\n return;\n }\n\n let urlOptions;\n if (this.options.project != null) {\n urlOptions = {\n params: [\n {\n parameter: 'projectId',\n value: this.options.project.id\n }\n ]\n }\n } else {\n urlOptions = null;\n }\n\n this.model.save({\n name: folderName\n }, {\n urlOptions: urlOptions,\n success: _.bind(function () {\n if (typeof this.options.onSave === 'function') {\n this.options.onSave(this.model);\n }\n this.removeModal();\n }, this)\n });\n }\n});\n","PJQ.views.files.OrderPrintsModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.FILES, 'Modal-Order-Prints'),\n minWidth: '600px',\n maxWidth: '1400px',\n isSelectRecipients: false,\n onOrderPlaced: null,\n mode: PJQ.constants.files.modes.PRINT,\n subTemplates: {\n orderFolderSelector: new PJQ.templating.Template(PJQ.constants.modules.FILES, 'ordering-folder-selector'),\n orderCalculatedItems: new PJQ.templating.Template(PJQ.constants.modules.FILES, 'ordering-calculated-items')\n },\n },\n events: {\n 'change .input-select-recipients': 'selectRecipientsChanged',\n 'click .btn-close': 'onCancel',\n 'click .btn-save': 'onSave',\n 'click .ordering-folder': 'selectFolder',\n 'click .select-file': 'fileSelectChanged',\n 'click .order-jump-step': 'goToStep',\n 'click .view-file': 'viewFile',\n 'click .delete-recipient': 'deleteRecipient',\n 'click .edit-recipient': 'editRecipient',\n 'click .select-all-files': 'selectAllFiles'\n },\n beforeModalCreated: function () {\n this.options.isAdmin = PJQ.app.session.project == null || PJQ.app.session.project.get('masterUserId') === PJQ.app.session.get('masterUserId');\n this.mode = this.options.mode ? this.options.mode : 'PRINTS';\n this.options.maxWidth = this.mode === PJQ.constants.files.modes.ALT_PRINT || (PJQ.app.session.project && PJQ.app.session.project.get('status').toLowerCase() === \"busy\") ? '1400px' : '600px';\n\n if (this.mode === PJQ.constants.files.modes.DOWNLOAD && this.options.files != null) {\n // Need this.options.files to be an array.\n if(PJQ.helpers.objectHelpers.refinedType(this.options.files, true) === 'backboneCollection'){\n this.options.files = this.options.files.models;\n }\n if(PJQ.helpers.objectHelpers.refinedType(this.options.files, true) === 'backboneModel'){\n this.options.files = [this.options.files];\n }\n this.options.files = _.filter(this.options.files, function (file) {\n if (file) {\n // There are cases of Non-Backbone models being passed through.\n if(PJQ.helpers.objectHelpers.refinedType(file, true) === 'backboneModel') {\n return !file.get('isFolder')\n }\n else{\n return !file.isFolder\n }\n }\n }, this)\n }\n\n if (this.options.files == null) {\n this.options.files = [];\n } else if (PJQ.helpers.objectHelpers.refinedType(this.options.files) !== 'array') {\n this.options.files = [this.options.files];\n }\n\n if (this.options.isAdmin && _.size(this.options.recipients) > 0) {\n this.options.isSelectRecipients = true;\n }\n\n // Fetch any updated preferences to make sure all are up to date\n if (PJQ.app.session.contact != null) {\n PJQ.app.session.preferences.fetch();\n if (!PJQ.app.session.contact.isFetched) {\n PJQ.app.session.contact.fetch({\n success: _.bind(function () {\n this.render();\n }, this)\n });\n }\n } else if (PJQ.app.session.user != null) {\n PJQ.app.session.preferences.fetch();\n if (!PJQ.app.session.user.isFetched) {\n PJQ.app.session.user.fetch({\n success: _.bind(function () {\n this.render();\n }, this)\n });\n }\n }\n },\n beforeRender: function () {\n this.createOrder();\n },\n selectRecipientsChanged: function () {\n this.options.isSelectRecipients = this.$('.input-select-recipients').prop('checked');\n this.render();\n },\n createOrder: function () {\n if (this.model == null) {\n this.model = new PJQ.models.files.Order({\n project: PJQ.app.session.project != null ? PJQ.app.session.project : this.options.project,\n description: \"\",\n poNumber: \"\",\n notes: \"\",\n largeFormatBinding: PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ORDER_LARGE_FORMAT_BINDING_TYPE) ? PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ORDER_LARGE_FORMAT_BINDING_TYPE) : \"STAPLED\",\n largeFormatPaperType: PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ORDER_LARGE_FORMAT_PAPER_TYPE) ? PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ORDER_LARGE_FORMAT_PAPER_TYPE) : \"WHITE BOND\",\n largeFormatQuantity: PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ORDER_LARGE_FORMAT_PRINT_SIZE) ? (PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ORDER_LARGE_FORMAT_PRINT_SIZE) === PJQ.constants.ordering.paperSize.FULL ? PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ORDER_LARGE_FORMAT_QUANTITY) : 0 ) : 0,\n smallFormatBinding: PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ORDER_SMALL_FORMAT_BINDING_TYPE) ? PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ORDER_SMALL_FORMAT_BINDING_TYPE) : \"STAPLED\",\n smallFormatQuantity: PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ORDER_SMALL_FORMAT_QUANTITY) ? PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ORDER_SMALL_FORMAT_QUANTITY) : 0,\n smallFormatPaperType: PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ORDER_SMALL_FORMAT_PAPER_TYPE) ? PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ORDER_SMALL_FORMAT_PAPER_TYPE) : \"WHITE BOND\",\n halfSizeQuantity: PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ORDER_LARGE_FORMAT_PRINT_SIZE) ? (PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ORDER_LARGE_FORMAT_PRINT_SIZE) === PJQ.constants.ordering.paperSize.HALF ? PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ORDER_LARGE_FORMAT_QUANTITY) : 0 ) : 0,\n cdQuantity: 0,\n shippingSpeed: PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ORDER_DELIVER_BY) ? PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ORDER_DELIVER_BY) : \"Next Day (Morning)\",\n files: this.options.files\n });\n }\n\n if (this.options.isAdmin && this.options.isSelectRecipients) {\n this.model.recipients = new PJQ.collections.contacts.Contacts(this.options.recipients != null ? this.options.recipients : []);\n } else {\n this.model.recipients = null;\n let contact;\n if (PJQ.app.session.contact != null) {\n contact = PJQ.app.session.contact;\n } else if (PJQ.app.session.user != null) {\n contact = PJQ.app.session.user;\n } else {\n contact = new PJQ.models.contacts.Contact();\n }\n this.model.set({\n notifyEmail: contact.get('email'),\n billingCompanyName: contact.get('companyName'),\n billingContactName: contact.get('contactName'),\n billingPhone: contact.get('phone'),\n billingPhoneExtension: contact.get('phoneExtension'),\n billingAddress1: contact.get('address1'),\n billingAddress2: contact.get('address2'),\n billingCity: contact.get('city'),\n billingState: contact.get('state'),\n billingZip: contact.get('zip'),\n billingCountry: contact.get('country') ? contact.get('country') : 'US',\n isDownload: this.mode === PJQ.constants.files.modes.DOWNLOAD\n });\n }\n },\n renderData: function () {\n return {\n isAdmin: this.options.isAdmin,\n isSelectRecipients: this.options.isSelectRecipients,\n mode: this.mode,\n model: this.model,\n price: this.price\n };\n },\n afterRender: function () {\n if (this.model != null) {\n if (this.options.isAdmin && this.options.isSelectRecipients) {\n new PJQ.views.contacts.ContactsSelectInput({\n el: this.$('.order-recipients'),\n context: PJQ.app.session.project != null ? PJQ.constants.contacts.contexts.PARTICIPANTS : PJQ.constants.contacts.contexts.CONTACTS,\n selectedContact: this.model.recipients.models,\n showSelectorAddress: true,\n isSingleChoice: false,\n onChange: _.bind(function (selectedContacts) {\n this.model.recipients.reset(selectedContacts);\n }, this)\n });\n } else {\n this.statePicker = new PJQ.inputs.Selectpicker({\n el: this.$('.contact-edit-state'),\n noneSelectedText: 'Select Value',\n defaultValue: this.model.get('billingState'),\n onChange: _.bind(function (value) {\n this.model.set('billingState', value.toUpperCase());\n }, this)\n });\n this.countryChanged();\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.contact-edit-country'),\n noneSelectedText: 'Select Value',\n defaultValue: _.size(this.model.get('billingCountry')) > 0 ? this.model.get('billingCountry').toLowerCase() : 'us',\n onChange: _.bind(function (value) {\n this.model.set('billingCountry', value.toUpperCase());\n this.model.set('billingZip', '');\n this.model.set('billingState', '');\n this.statePicker.setValue('');\n this.$('.contact-edit-zip').val('');\n this.countryChanged();\n }, this)\n });\n\n PJQ.helpers.inputHelpers.inputMaskPhone(this.$('.contact-edit-phone'));\n PJQ.helpers.inputHelpers.inputMaskPhone(this.$('.contact-edit-fax'));\n PJQ.helpers.inputHelpers.inputMaskPhone(this.$('.contact-edit-cell'));\n }\n new PJQ.views.files.FileSelectInput({\n el: this.$('.order-files'),\n project: this.model.project,\n selectedFiles: this.model.files,\n collection: this.options.collection,\n ignoreFolders: true,\n selectorOptions: {\n header: 'Select files to order',\n confirmButton: 'Update Order'\n },\n isShowChangeButton: true,\n onChange: _.bind(function (selectedFiles) {\n this.model.files = selectedFiles;\n this.calculateCost();\n }, this)\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.order-lf-paper'),\n defaultValue: this.model.get('largeFormatPaperType'),\n onChange: _.bind(function (value) {\n this.model.set('largeFormatPaperType', value.toUpperCase());\n }, this)\n });\n new PJQ.inputs.Selectpicker({\n el: this.$('.order-lf-binding'),\n defaultValue: this.model.get('largeFormatBinding'),\n onChange: _.bind(function (value) {\n this.model.set('largeFormatBinding', value.toUpperCase());\n }, this)\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.order-sf-paper'),\n defaultValue: this.model.get('smallFormatPaperType'),\n onChange: _.bind(function (value) {\n this.model.set('smallFormatPaperType', value.toUpperCase());\n }, this)\n });\n new PJQ.inputs.Selectpicker({\n el: this.$('.order-sf-binding'),\n defaultValue: this.model.get('smallFormatBinding'),\n onChange: _.bind(function (value) {\n this.model.set('smallFormatBinding', value.toUpperCase());\n }, this)\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.order-shipping-speed'),\n defaultValue: this.model.get('shippingSpeed'),\n onChange: _.bind(function (value) {\n this.model.set('shippingSpeed', value.toUpperCase());\n }, this)\n });\n\n if (this.price == null && this.mode === PJQ.constants.files.modes.DOWNLOAD) {\n this.calculateCost();\n }\n\n if(this.mode === PJQ.constants.files.modes.ALT_PRINT){\n this.goToStep(1)\n this.renderFolderPicker();\n this.renderAddressBook();\n }\n\n new PJQ.Binder(this.$el, this.model);\n } else {\n new PJQ.Loader(this.$('.order-loading'));\n }\n },\n deleteRecipient: function(e){\n let target = $(e.currentTarget),\n contactId = target.closest('.card-body').data('id');\n\n this.model.recipients.remove(contactId);\n this.calculateCost();\n },\n editRecipient: function(e){\n let target = $(e.currentTarget),\n contactId = target.closest('.card-body').data('id');\n\n new PJQ.views.contacts.BaseEditContactModal({\n model: this.model.recipients.get(contactId),\n onSave: _.bind(function () {\n this.calculateCost();\n }, this)\n });\n },\n selectAllFiles: function(e){\n let isChecked = $(e.currentTarget).prop('checked'),\n fileSelects = this.$('.select-file');\n\n if(isChecked){\n this.model.files = _.union(this.model.files, this.selectedFolderFiles);\n }\n else{\n _.each(this.selectedFolderFiles, function(file){\n this.model.files = _.without(this.model.files, file);\n }, this)\n }\n\n fileSelects.prop('checked', isChecked);\n\n this.$('.order-selected-file-count').text(this.model.files.length);\n this.$('.step-1-continue').attr('disabled', !_.size(this.model.files) > 0);\n },\n viewFile: function(e){\n let target = $(e.currentTarget),\n row = this.filesTable.getRow(target.closest('tr')),\n file = row.data();\n\n if (file.isImage()) {\n PJQ.app.view.renderPhotoViewer({\n model: file,\n canDownload: false,\n canDelete: false\n });\n }\n else if (file.canRender()) {\n new PJQ.views.files.FileViewer({\n model: file,\n isDisableDownload: true\n });\n }\n },\n renderFolderPicker: function(selectedFolder){\n let fnRender = _.bind(function(){\n this.folders = _.filter(this.attachments.models, function (attachment) {\n let isSecondLevel = false;\n if(attachment.get('isFolder') && attachment.get('entryId') !== -1){\n let parent = this.attachments.get(attachment.get('folderId'));\n if(parent){\n isSecondLevel = parent.get('entryId') === -1 || parent.get('folderId') === 0;\n }\n }\n return isSecondLevel && _.size(attachment.getFolderAttachments(true, {\n hideFolders: true\n })) > 0;\n }, this);\n\n if (selectedFolder) {\n this.selectedFolder = _.find(this.attachments.models, function (folder) {\n return folder.id === selectedFolder;\n })\n }\n else {\n this.selectedFolder = this.folders[0];\n }\n\n if(this.selectedFolder){\n this.selectedFolderFiles = _.filter(this.attachments.models, function (attachment) {\n return attachment.get('folderId') === this.selectedFolder.get('entryId') && !attachment.get('isFolder');\n }, this)\n }\n\n let templateData = {\n models: this.folders,\n selectedFolder: this.selectedFolder\n }\n this.renderSubTemplate(false, this.options.subTemplates.orderFolderSelector, this.$('.file-folder-selector'), templateData);\n this.renderFilesTable();\n }, this);\n if(this.attachments == null || this.folders == null) {\n this.options.project.fetchAttachments({\n isShared: true,\n isPrivate: false,\n forceRecursive: true\n }, _.bind(function (attachments) {\n this.attachments = attachments;\n fnRender();\n }, this))\n }\n else{\n fnRender();\n }\n },\n renderAddressBook: function(){\n this.addressBookView = new PJQ.views.addressbook.AddressBook({\n el: this.$('.address-book'),\n selectionMode: PJQ.constants.addressBook.selectionMode.ADD_TO_PROJECT,\n disabledContacts: [],\n disabledContactGroups: null,\n onSelection: _.bind(function (contactsAll, contactsNoGroup, contactGroups) {\n this.$('.order-selected-contact-count').text(contactsAll.length);\n this.$('.step-2-continue').attr('disabled', !contactsAll.length > 0);\n this.selectedRecipients = contactsAll;\n }, this)\n });\n },\n renderFilesTable: function () {\n this.filesTable = new PJQ.views.dataTables.DataTable({\n el: this.$(\".file-selector-table\"),\n data: this.selectedFolderFiles,\n rowId: \"cid\",\n order: [0, 'asc'],\n language: {\n zeroRecords: 'Folder contains no files'\n },\n pageLength: 50,\n onRowDoubleClick: _.bind(function (row) {\n\n }, this),\n columns: [\n {\n \"columnData\": '',\n \"title\": '