From 8de6c64f1c601e9fe2a4e838c378ceca26027a7b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 6 Jul 2021 09:55:57 +0200 Subject: [PATCH] add missing css and js files (formerly in styles/bootstrap) --- views/bootstrap/styles/application.css | 467 +++++++++ views/bootstrap/styles/application.js | 1341 ++++++++++++++++++++++++ 2 files changed, 1808 insertions(+) create mode 100644 views/bootstrap/styles/application.css create mode 100644 views/bootstrap/styles/application.js diff --git a/views/bootstrap/styles/application.css b/views/bootstrap/styles/application.css new file mode 100644 index 000000000..781b34ee1 --- /dev/null +++ b/views/bootstrap/styles/application.css @@ -0,0 +1,467 @@ +@media (min-width: 980px) { + body { /* Add top padding for full-width layout */ + padding-top: 60px; + } +} +#login_wrapper { + margin: auto auto; + width: 460px; +} +.navbar img { + height: 1.93rem; + float: left; + padding-top: 5px; + padding-right: 5px; +} +@media (max-width: 767px) { + .navbar img { + padding-left: 10px; + } + #login_wrapper { + width: 100%; + } +} +img.mimeicon { + -moz-border-bottom-colors: none; + -moz-border-image: none; + -moz-border-left-colors: none; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + border-color: #CCCCCC #AAAAAA #999999 #CCCCCC; + border-style: solid; + border-width: 1px 2px 2px 1px; + background-color: white; + max-width: 100%; + min-width: 60px; +} + +span.list-details { + font-size: 85%; + font-style: italic; + color: #666; +} + +.list-action a { + text-decoration: none; + color: #333; + padding: 2px; + cursor: pointer; + font-size: 110%; +} + +ul.action-list li a { + padding-top: 4px; + padding-bottom: 4px; +} + +#admin-tools i { + font-size: 300%; + line-height: 110%; +/* min-height: 100px; */ +} + +#admin-tools a { + margin-bottom: 10px; +} + +ul.unstyled li a:hover > i { + text-decoration: none; + padding-left: 0px; +} +ul.unstyled li a > i { + color: #000; + margin-right: 5px; +} +ul.unstyled li a.btn > i { + font-size: 200%; +} + +ul.tree, ul.tree ul { + margin-left: 20px; +} + +ul.jqtree-tree li.jqtree-selected > .jqtree-element, +ul.jqtree-tree li.jqtree-selected > .jqtree-element:hover { + background-color: #fff; + background: none; + text-shadow: none; + font-weight: bold; +} + +legend > span { + float: right; +} + +td.today { + background-color: rgb(255, 200, 0); +} + +td.event { + background-color: rgb(0, 200, 255); +} + +.wordbreak { + word-break: break-word; +} + +.btn-file { + position: relative; + overflow: hidden; +} +.btn-file input[type=file] { + position: absolute; + top: 0; + right: 0; + min-width: 100%; + min-height: 100%; + font-size: 999px; + text-align: right; + filter: alpha(opacity=0); + opacity: 0; + background: red; + cursor: inherit; + display: block; +} +input[readonly] { + background-color: white !important; + cursor: text !important; +} + +div.mandatories { + font-size: 90%; + font-style: italic; + color: #888; +} +div.mandatories span { + font-weight: bold; +} + +div.statusbar { + font-size: 80%; +} +div.statusbar div.filename { + display: inline-block; +} +div.statusbar div.filesize { + display: inline-block; + float: right; +} +div.statusbar div.progress { + margin-bottom: 10px; +} +div.statusbar a.btn { + margin-bottom: 10px; +} + +#database .chosen-container, +#fulltext .chosen-container { + width: 95% !important; +} + +.chosen-container-multi .chosen-choices { + border: 1px solid #cccccc; + border-radius: 4px; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + transition: border linear 0.2s, box-shadow linear 0.2s; + padding: 2px 6px; + height: 20px; +} + +div.help h1 { + font-size: 24px; +} + +div.help h2 { + font-size: 18px; +} + +div.help h3 { + font-size: 16px; +} + +#dropfolderChooser { + width: 60%; + left: 20%; + margin-left: auto; + margin-right: auto; +} + +div.splash { + display: none; +} + +div.clipboard-container { + position: fixed; + left: 10px; + top: 40px; + width: 29.8%; + min-width: 200px; + background: white; + border: 1px solid #d4d4d4; + border-radius: 5px; + padding: 10px; + max-height: 400px; + margin: 10px; + overflow-y: auto; + overflow-x: hidden; + z-index: 1; +} +div.clipboard-container legend { + display: none; +} + +div.statusbar-container { + display: none; + position: fixed; + right:10px; + top:60px; + width:300px; + padding:10px; + background-color: white; + border: 1px solid #E0E0E0; + border-radius: 4px; + z-index: 10; + overflow-y: scroll; + max-height: calc(100% - 100px); +} +div.statusbar-container::-webkit-scrollbar { + width: 5px; +} +div.statusbar-container::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); + border-radius: 10px; +} + +div.statusbar-container::-webkit-scrollbar-thumb { + border-radius: 10px; + -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5); +} + +div.statusbar-container h1 { + font-size: 21px; + line-height: 40px; + color: #333333; + font-weight: normal; +} + +ul.jqtree-tree li.jqtree_common > .jqtree-element:hover { + background-color: #E0E0E0; +} + +span.datepicker { + padding: 0px; +} +span.datepicker input { + max-width: 100px; +} +/* Sidenav for Docs + * -------------------------------------------------- */ + +.bs-docs-sidenav { + width: 100%; + margin: 0px 0 30px 0; + padding: 0; + background-color: #fff; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 1px 4px rgba(0,0,0,.065); + -moz-box-shadow: 0 1px 4px rgba(0,0,0,.065); + box-shadow: 0 1px 4px rgba(0,0,0,.065); +} +.bs-docs-sidenav > li > a { + display: block; + width: 190px \9; + margin: 0 0 -1px; + padding: 8px 14px; + border: 1px solid #e5e5e5; +} +.bs-docs-sidenav > li:first-child > a { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} +.bs-docs-sidenav > li:last-child > a { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} +.bs-docs-sidenav > .active > a { + position: relative; + z-index: 2; + padding: 9px 15px; + border: 0; + text-shadow: 0 1px 0 rgba(0,0,0,.15); + -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.1), inset -1px 0 0 rgba(0,0,0,.1); + -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.1), inset -1px 0 0 rgba(0,0,0,.1); + box-shadow: inset 1px 0 0 rgba(0,0,0,.1), inset -1px 0 0 rgba(0,0,0,.1); +} +/* Chevrons */ +.bs-docs-sidenav .badge-right { + float: right; + margin-top: 2px; + margin-right: -6px; +} +.bs-docs-sidenav > li > a:hover { + background-color: #f5f5f5; +} +.bs-docs-sidenav a:hover .icon-chevron-right { + opacity: .5; +} +.bs-docs-sidenav .active .icon-chevron-right, +.bs-docs-sidenav .active a:hover .icon-chevron-right { + background-image: url(../img/glyphicons-halflings-white.png); + opacity: 1; +} +.bs-docs-sidenav.affix { + top: 100px; +} +.bs-docs-sidenav.affix-bottom { + position: absolute; + top: auto; + bottom: 270px; +} + +i.success {color: #00b000;} +i.enabled {color: #00b000;} +i.error {color: #b00000;} +i.disabled {color: #b00000;} +i.warning {color: #ff9900;} +i.initstate {color: #ff9900;} +i.released {color: #00b000;} +i.rejected {color: #b00000;} +i.in-workflow {color: #11479e;} +i.workflow-action {color: #91479e;} +i.selected {border: 1px solid #d4d4d4;padding:3px;border-radius:3px;background-color:#fafafa;background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);} + +span.editable:after { + font: normal normal normal 14px/1 FontAwesome; + content: " \f044"; +} + +span.openpopupbox { + cursor: pointer; +} + +div.popupbox { + margin-top: 5px; + background-color: #fff; + border-radius: 4px; + color: black; + text-align: left; + text-shadow: none; + border: 1px solid #ccc; + padding: 25px 15px 15px 15px; + display: none; + position: absolute; + min-width: 230px; + z-index: 10; +} + +div.popupbox dt { + font-weight: normal; + font-size: 80%; +} + +div.popupbox dd { + margin-left: 0px; + margin-bottom: 5px; +} + +div.popupbox span.closepopupbox { + position: absolute; + right: 5px; + top: 0px; +} + +ul.qq-upload-list { + /* + background-color: #fff; + border-radius: 4px; + border: 1px solid #cccccc; + */ +} + +ul.qq-upload-list li { + display: inline-block; + margin: 5px 5px 5px 0; + padding: 5px; + background-color: #fff; + border: 1px solid #cccccc; + border-radius: 4px; +} + +ul.qq-upload-list li img { + display: block; +} + +ul.qq-upload-list li span { + display: block; +} + +.qq-upload-button { + display: inline-block; +} + +.qq-upload-drop-area { + display: inline-block; + width: 200px; + height: 22px; + padding: 3px; + background-color: #fff; + border: 1px solid #cccccc; + border-radius: 4px; +} +.qq-hide, .qq-uploader dialog { + display: none; +} + +@media (min-width: 1200px) { + .modal-wide { + width: 800px; + margin-left: -400px; + } +} + +@media (max-width: 480px) { + .nav-tabs > li { + float:none; + } + .nav-tabs > li > a { + margin-right: 0; + } + + .nav-tabs { + border-bottom: 0; + } + + .nav-tabs > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + } + + .nav-tabs > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + } + + .nav-tabs > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + } + + .nav-tabs > li > a:hover { + z-index: 2; + border-color: #ddd; + } +} diff --git a/views/bootstrap/styles/application.js b/views/bootstrap/styles/application.js new file mode 100644 index 000000000..c728bcae0 --- /dev/null +++ b/views/bootstrap/styles/application.js @@ -0,0 +1,1341 @@ +/* Template function which outputs an option in a chzn-select + * The replace() call is required to prevent xss attacks (see CVE-2019-12745) + * Using htmlspecialchars() in php isn't sufficient because, chzn_template_func + * will receive an unescaped string + * (see https://forums.select2.org/t/propperly-escape-option-value-to-prevent-xss/788) + */ +chzn_template_func = function (state) { + var subtitle = ''; + if($(state.element).data('subtitle')) + subtitle = $(state.element).data('subtitle')+''; /* make sure it is a string */ + var warning = ''; + if($(state.element).data('warning')) + warning = $(state.element).data('warning')+''; /* make sure it is a string */ + var html = ''; + if($(state.element).data('icon-before')) + html += ' '; + html += state.text.replace(/'; + if(warning) + html += '
'+warning+''; + html += '
'; + var $newstate = $(html); + return $newstate; +}; + +function escapeHtml(text) { + var map = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + + return text.replace(/[&<>"']/g, function(m) { return map[m]; }); +} + +function treeFolderSelected(formid, nodeid, nodename) { + $('#'+formid).val(nodeid); + $('#choosefoldersearch'+formid).val(nodename); + $('#folderChooser'+formid).modal('hide'); +} + +function treeDocumentSelected(formid, nodeid, nodename) { + $('#'+formid).val(nodeid); + $('#choosedocsearch'+formid).val(nodename); + $('#docChooser'+formid).modal('hide'); +} + +function initMost() { + $('.datepicker, #expirationdate, #createstartdate, #createenddate, #expirationstartdate, #expirationenddate') + .datepicker({todayHighlight: true, toggleActive: true}) + .on('changeDate', function(ev){ + if(ev.date && $(ev.target).data('selectmenu')) { + $("#"+$(ev.target).data('selectmenu')).val('date'); + } + $(ev.currentTarget).datepicker('hide'); + }); + + $(".chzn-select").select2({ + width: '100%', + templateResult: chzn_template_func//, + //templateSelection: chzn_template_func + }); + + /* change the color and length of the bar graph showing the password + * strength on each change to the passwod field. + */ + $(".pwd").passStrength({ /* {{{ */ + url: seeddms_webroot+"op/op.Ajax.php", + onChange: function(data, target) { + pwsp = 100*data.score; + $('#'+target+' div.bar').width(pwsp+'%'); + if(data.ok) { + $('#'+target+' div.bar').removeClass('bar-danger'); + $('#'+target+' div.bar').addClass('bar-success'); + } else { + $('#'+target+' div.bar').removeClass('bar-success'); + $('#'+target+' div.bar').addClass('bar-danger'); + } + } + }); /* }}} */ + + /* The typeahead functionality useѕ the modified version of + * bootstrap-typeahead, which is able to set the render function. + * This was needed because the search function return json objects + * for each hit and render could only process strings. + * */ + $("#searchfield").typeahead({ /* {{{ */ + minLength: 3, + items: 100, /* the query will limit the number of hits */ + source: function(query, process) { + var d = new Date(); + var pastYear = d.getFullYear() - 1; + d.setFullYear(pastYear); +// console.log(d.toISOString().split('T')[0]); + +// $.get('../restapi/index.php/search', { query: query, limit: 8, mode: 'typeahead' }, function(data) { + var data = { + query: query, + limit: 18, +// fullsearch: 1, +// creationdate: 1, +// createstart: d.toISOString().split('T')[0], + action: 'typeahead' + }; + /* Return a list of json objects, each containing + * type: type of object (D=doc, F=folder, S=searchterm) + * name: name of object + */ + $.get(seeddms_webroot+'out/out.Search.php', data, function(data) { + process(data); + }); + }, + /* updater is called when the item in the list is clicked. It is + * actually provided to update the input field, but here we use + * it to set the document location. The passed value is the string + * set in data-value of the list items. + * This method relies on some changes in bootstrap-typeahead.js + * Originally, update was passed only the data-value of the li item + * which is set in the render fuction below, + * but the modified version passes all data fields. which also + * contain the 'id' and 'type' (also set in render function). + **/ + updater: function (item) { + if(item.id) { + if(item.type == 'D') + document.location = seeddms_webroot+"out/out.ViewDocument.php?documentid=" + item.id; + else + document.location = seeddms_webroot+"out/out.ViewFolder.php?folderid=" + item.id; + } else + document.location = seeddms_webroot+"out/out.Search.php?query=" + encodeURIComponent(item.value); + return item.value; + }, + sorter: function(items) { + return items; + }, + /* matcher will always return true, because the initial search returns + * matches only + */ + matcher : function (item) { + return true; + }, + /* highlighter is for modifying the 'a' tag text. It places an icon + * in front of the name and replaces a '<' within the name with an + * entity. + **/ + highlighter : function (item) { + if(item.type.charAt(0) == 'D') + return ' ' + item.name.replace(/ ' + item.name.replace(/ ' + item.name.replace(/ ' + strarr[1].replace(/ ' + strarr[1].replace(/
'); + $.get(url, function(data) { + element.html(data); + if(afterload) { + var func = eval(afterload); + if(typeof func === "function"){ + func(); + } + } + initMost(); + }); + }); /* }}} */ + + $('div.ajax').on('update', function(event, param1, callback) { /* {{{ */ + var element = $(this); + var url = ''; + var href = element.data('href'); + var base = element.data('base'); + if(typeof base == 'undefined') + base = ''; + var view = element.data('view'); + var action = element.data('action'); + var query = element.data('query'); + var afterload = $(this).data('afterload'); + if(view && action) { + url = seeddms_webroot+base+"out/out."+view+".php?action="+action; + if(query) { + url += "&"+query; + } + } else + url = href; + if(typeof param1 === 'object') { + for(var key in param1) { + if(key == 'callback') + callback = param1[key]; + else { + if($.isArray(param1[key])) { + if(param1[key].length > 0) + url += "&"+key+"[]="+param1[key].join("&"+key+"[]="); + } else + url += "&"+key+"="+param1[key]; + } + } + } else { + url += "&"+param1; + } + console.log(url); + if(!element.data('no-spinner')) + element.prepend('
'); + $.get(url, function(data) { + element.html(data); + if(callback) + callback.call(); + if(afterload) { + var func = eval(afterload); + if(typeof func === "function"){ + func(); + } + } + initMost(); + }); + }); /* }}} */ + + $("body").on("click", ".ajax-click", function() { /* {{{ */ + var element = $(this); + var url = element.data('href')+"?"+element.data('param1'); + $.ajax({ + type: 'GET', + url: url, + dataType: 'json', + success: function(data){ + if(data.success) { + if(element.data('param1') == 'command=clearclipboard') { + $("#main-clipboard").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=mainclipboard') + $("#menu-clipboard div").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=menuclipboard') + } + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + } + }); + }); /* }}} */ + + $('button.history-back').on('click', function(event) { /* {{{ */ + window.history.back(); + }); /* }}} */ + + $("body").on("blur", "span.editable", function(e) { /* {{{ */ + console.log($(this).data('document')); + e.preventDefault(); + $.post(seeddms_webroot+"op/op.Ajax.php", { command: "setdocumentname", id: $(this).data('document'), formtoken: $(this).data('formtoken'), name: $(this).text() }) + .done(function( data ) { + noty({ + text: data.message, + type: data.success ? 'success' : 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + }); + }); /* }}} */ + + $("body").on("keypress", "span.editable", function(e) { /* {{{ */ + if(e.which == 13) { + $(this).blur(); + } + return e.which != 13; + }); /* }}} */ +}); + +function onAddClipboard(ev) { /* {{{ */ + ev.preventDefault(); + var source_info = JSON.parse(ev.originalEvent.dataTransfer.getData("text")); + source_type = source_info.type; + source_id = source_info.id; + formtoken = source_info.formtoken; + if(source_type == 'document' || source_type == 'folder') { + $.get(seeddms_webroot+'op/op.Ajax.php', + { command: 'addtoclipboard', type: source_type, id: source_id }, + function(data) { + if(data.success) { + $("#main-clipboard").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=mainclipboard') + $("#menu-clipboard div").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=menuclipboard') + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + }, + 'json' + ); + //url = "../op/op.AddToClipboard.php?id="+source_id+"&type="+source_type; + //document.location = url; + } +} /* }}} */ + +(function( SeedDMSUpload, $, undefined ) { /* {{{ */ + var ajaxurl = seeddms_webroot+"op/op.Ajax.php"; + var editBtnLabel = "Edit"; + var abortBtnLabel = "Abort"; + var maxFileSize = 100000; + var maxFileSizeMsg = 'File too large'; + var rowCount=0; + + SeedDMSUpload.setUrl = function(url) { + ajaxurl = url; + } + + SeedDMSUpload.setAbortBtnLabel = function(label) { + abortBtnLabel = label; + } + + SeedDMSUpload.setEditBtnLabel = function(label) { + editBtnLabel = label; + } + + SeedDMSUpload.setMaxFileSize = function(size) { + maxFileSize = size; + } + + SeedDMSUpload.setMaxFileSizeMsg = function(msg) { + maxFileSizeMsg = msg; + } + + function sendFileToServer(formData,status,callback) { + var uploadURL = ajaxurl; //Upload URL + var extraData ={}; //Extra Data. + var jqXHR=$.ajax({ + xhr: function() { + var xhrobj = $.ajaxSettings.xhr(); + if (xhrobj.upload) { + xhrobj.upload.addEventListener('progress', function(event) { + var percent = 0; + var position = event.loaded || event.position; + var total = event.total; + if (event.lengthComputable) { + percent = Math.ceil(position / total * 100); + } + //Set progress + status.setProgress(percent); + }, false); + } + return xhrobj; + }, + url: uploadURL, + type: "POST", + contentType: false, + dataType:"json", + processData: false, + cache: false, + data: formData, + success: function(data, textStatus) { + status.setProgress(100); + if(data.success) { + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + status.statusbar.after($('' + editBtnLabel + '')); + if(callback) { + callback(); + } + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + } + }); + + status.setAbort(jqXHR); + } + + function createStatusbar(obj) { + rowCount++; + var row="odd"; + this.obj = obj; + if(rowCount %2 ==0) row ="even"; + this.statusbar = $("
"); + this.filename = $("
").appendTo(this.statusbar); + this.size = $("
").appendTo(this.statusbar); + this.progressBar = $("
").appendTo(this.statusbar); + this.abort = $("
" + abortBtnLabel + "
").appendTo(this.statusbar); +// $('.statusbar').empty(); + obj.after(this.statusbar); + this.setFileNameSize = function(name,size) { + var sizeStr=""; + var sizeKB = size/1024; + if(parseInt(sizeKB) > 1024) { + var sizeMB = sizeKB/1024; + sizeStr = sizeMB.toFixed(2)+" MB"; + } else { + sizeStr = sizeKB.toFixed(2)+" KB"; + } + + this.filename.html(name); + this.size.html(sizeStr); + } + this.setProgress = function(progress) { + var progressBarWidth =progress*this.progressBar.width()/ 100; + this.progressBar.find('div').animate({ width: progressBarWidth }, 10).html(progress + "% "); + if(parseInt(progress) >= 100) { + this.abort.hide(); + } + } + this.setAbort = function(jqxhr) { + var sb = this.statusbar; + this.abort.click(function() { + jqxhr.abort(); + sb.hide(); + }); + } + } + + SeedDMSUpload.handleFileUpload = function(files,obj,statusbar) { + /* target is set for the quick upload area */ + var target_id = obj.data('target'); + var target_type = 'folder'; + /* droptarget is set for folders and documents in lists */ + var droptarget = obj.data('droptarget'); + if(droptarget) { + target_type = droptarget.split("_")[0]; + target_id = droptarget.split("_")[1]; + } + if(target_type == 'folder' && target_id) { + for (var i = 0; i < files.length; i++) { + if(files[i].size <= maxFileSize) { + var fd = new FormData(); + fd.append('targettype', target_type); + fd.append('folderid', target_id); + fd.append('formtoken', obj.data('uploadformtoken')); + fd.append('userfile', files[i]); + fd.append('command', 'uploaddocument'); +// fd.append('path', files[i].webkitRelativePath); + + statusbar.parent().show(); + var status = new createStatusbar(statusbar); + status.setFileNameSize(files[i].name,files[i].size); + sendFileToServer(fd,status,function(){ + if(target_id == seeddms_folder) + $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); + }); + } else { + noty({ + text: maxFileSizeMsg + '
' + files[i].name + ' (' + files[i].size + ' Bytes)', + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 5000 + }); + } + } + } else if(target_type == 'document' && target_id) { + /* + for (var i = 0; i < files.length; i++) { + if(files[i].size <= maxFileSize) { + var fd = new FormData(); + fd.append('targettype', target_type); + fd.append('documentid', target_id); + fd.append('formtoken', obj.data('uploadformtoken')); + fd.append('userfile', files[i]); + fd.append('command', 'uploaddocument'); + + var status = new createStatusbar(statusbar); + status.setFileNameSize(files[i].name,files[i].size); + sendFileToServer(fd,status); + } else { + noty({ + text: maxFileSizeMsg + '
' + files[i].name + ' (' + files[i].size + ' Bytes)', + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 5000 + }); + } + } + */ + } + } +}( window.SeedDMSUpload = window.SeedDMSUpload || {}, jQuery )); /* }}} */ + +$(document).ready(function() { /* {{{ */ + $(document).on('dragenter', "#draganddrophandler", function (e) { + e.stopPropagation(); + e.preventDefault(); + $(this).css('border', '2px dashed #0B85A1'); + }); + $(document).on('dragleave', "#draganddrophandler", function (e) { + $(this).css('border', '0px solid white'); + }); + $(document).on('dragover', "#draganddrophandler", function (e) { + e.stopPropagation(); + e.preventDefault(); + }); + $(document).on('drop', "#draganddrophandler", function (e) { + $(this).css('border', '0px dotted #0B85A1'); + e.preventDefault(); + var files = e.originalEvent.dataTransfer.files; + + //We need to send dropped files to Server + SeedDMSUpload.handleFileUpload(files, $(this), $(this)); + }); + + $(document).on('dragenter', '.droptarget', function (e) { + e.stopPropagation(); + e.preventDefault(); + $(e.currentTarget).css('border', '2px dashed #0B85A1'); + }); + $(document).on('dragleave', '.droptarget', function (e) { + e.stopPropagation(); + e.preventDefault(); + $(e.currentTarget).css('border', '0px solid white'); + }); + $(document).on('dragover', '.droptarget', function (e) { + e.stopPropagation(); + e.preventDefault(); + }); + $(document).on('drop', '.droptarget', function (e) { + e.preventDefault(); + e.stopPropagation(); + $(e.currentTarget).css('border', '0px solid white'); + attr_rel = $(e.currentTarget).data('droptarget'); + target_type = attr_rel.split("_")[0]; + target_id = attr_rel.split("_")[1]; + target_name = $(e.currentTarget).data('name')+''; // Force this to be a string + if(target_type == 'folder') { + var files = e.originalEvent.dataTransfer.files; + if(files.length > 0) { +// console.log('Drop '+files.length+' files on '+target_type+' '+target_id); + SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/); + } else { + var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text")); + source_type = source_info.type; + source_id = source_info.id; + formtoken = source_info.formtoken; +// console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id); + if(source_type == 'document') { + var bootbox_message = trans.confirm_move_document; + if(source_info.name) + bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; + bootbox.dialog(bootbox_message, [{ + "label" : " "+trans.move_document, + "class" : "btn-danger", + "callback": function() { + $.get(seeddms_webroot+'op/op.Ajax.php', + { command: 'movedocument', docid: source_id, targetfolderid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-document-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.cancel, + "class" : "btn-cancel", + "callback": function() { + } + }]); + + url = seeddms_webroot+"out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; + // document.location = url; + } else if(source_type == 'folder' && source_id != target_id) { + var bootbox_message = trans.confirm_move_folder; + if(source_info.name) + bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; + bootbox.dialog(bootbox_message, [{ + "label" : " "+trans.move_folder, + "class" : "btn-danger", + "callback": function() { + $.get(seeddms_webroot+'op/op.Ajax.php', + { command: 'movefolder', folderid: source_id, targetfolderid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-folder-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.cancel, + "class" : "btn-cancel", + "callback": function() { + } + }]); + + url = seeddms_webroot+"out/out.MoveFolder.php?folderid="+source_id+"&targetid="+target_id; + // document.location = url; + } + } + } else if(target_type == 'document') { + var files = e.originalEvent.dataTransfer.files; + if(files.length > 0) { +// console.log('Drop '+files.length+' files on '+target_type+' '+target_id); + SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/); + } else { + var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text")); + source_type = source_info.type; + source_id = source_info.id; + formtoken = source_info.formtoken; +// console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id); + if(source_type == 'document') { + if(source_id != target_id) { + bootbox.dialog(trans.confirm_transfer_link_document, [{ + "label" : trans.transfer_content, + "class" : "btn-danger", + "callback": function() { + $.get(seeddms_webroot+'op/op.Ajax.php', + { command: 'transfercontent', docid: source_id, targetdocumentid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-document-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.link_document, + "class" : "btn-danger", + "callback": function() { + $.get(seeddms_webroot+'op/op.Ajax.php', + { command: 'linkdocument', docid: source_id, targetdocumentid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.cancel, + "class" : "btn-cancel", + "callback": function() { + } + }]); + } + url = seeddms_webroot+"out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; + // document.location = url; + } + } + } else if(target_type == 'attachment') { + console.log('attachment'); + var files = e.originalEvent.dataTransfer.files; + if(files.length > 0) { + } + } + }); + $(document).on('dragstart', '.table-row-folder', function (e) { + attr_rel = $(e.target).attr('rel'); + if(typeof attr_rel == 'undefined') + return; + var dragStartInfo = { + id : attr_rel.split("_")[1], + type : "folder", + formtoken : $(e.target).attr('formtoken'), + name: $(e.target).data('name')+'' + }; + /* Currently not used + $.ajax({url: '../out/out.ViewFolder.php', + type: 'GET', + dataType: "json", + data: {action: 'data', folderid: attr_rel.split("_")[1]}, + success: function(data) { + if(data) { + dragStartInfo.source = data; + } + }, + timeout: 3000 + }); + */ + e.originalEvent.dataTransfer.setData("text", JSON.stringify(dragStartInfo)); + }); + + $(document).on('dragstart', '.table-row-document', function (e) { + attr_rel = $(e.target).attr('rel'); + if(typeof attr_rel == 'undefined') + return; + var dragStartInfo = { + id : attr_rel.split("_")[1], + type : "document", + formtoken : $(e.target).attr('formtoken'), + name: $(e.target).data('name')+'' + }; + e.originalEvent.dataTransfer.setData("text", JSON.stringify(dragStartInfo)); + }); + + /* Dropping item on alert below clipboard */ + $(document).on('dragenter', '.add-clipboard-area', function (e) { + e.stopPropagation(); + e.preventDefault(); + $(this).css('border', '2px dashed #0B85A1'); + }); + $(document).on('dragleave', '.add-clipboard-area', function (e) { + $(this).css('border', '0px solid white'); + }); + $(document).on('dragover', '.add-clipboard-area', function (e) { + e.preventDefault(); + }); + $(document).on('drop', '.add-clipboard-area', function (e) { + $(this).css('border', '0px dotted #0B85A1'); + onAddClipboard(e); + }); + + $("#jqtree").on('dragenter', function (e) { + attr_rel = $(e.srcElement).attr('rel'); + if(typeof attr_rel == 'undefined') + return; + $(e.target).parent().css('border', '1px dashed #0B85A1'); + e.stopPropagation(); + e.preventDefault(); + }); + $("#jqtree").on('dragleave', function (e) { + attr_rel = $(e.srcElement).attr('rel'); + if(typeof attr_rel == 'undefined') + return; + $(e.target).parent().css('border', '0px solid white'); + e.stopPropagation(); + e.preventDefault(); + }); + $("#jqtree").on('dragover', function (e) { + e.stopPropagation(); + e.preventDefault(); + }); + $("#jqtree").on('drop', function (e) { + e.stopPropagation(); + e.preventDefault(); + attr_rel = $(e.target).attr('rel'); + if(typeof attr_rel == 'undefined') + return; + $(e.target).parent().css('border', '1px solid white'); + target_type = attr_rel.split("_")[0]; + target_id = attr_rel.split("_")[1]; + var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text")); + source_type = source_info.type; + source_id = source_info.id; + formtoken = source_info.formtoken; + if(source_type == 'document') { + bootbox.dialog(trans.confirm_move_document, [{ + "label" : " "+trans.move_document, + "class" : "btn-danger", + "callback": function() { + $.get(seeddms_webroot+'op/op.Ajax.php', + { command: 'movedocument', docid: source_id, targetfolderid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-document-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.cancel, + "class" : "btn-cancel", + "callback": function() { + } + }]); + + url = seeddms_webroot+"out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; +// document.location = url; + } else if(source_type == 'folder' && source_id != target_id) { + bootbox.dialog(trans.confirm_move_folder, [{ + "label" : " "+trans.move_folder, + "class" : "btn-danger", + "callback": function() { + $.get(seeddms_webroot+'op/op.Ajax.php', + { command: 'movefolder', folderid: source_id, targetfolderid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-folder-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.cancel, + "class" : "btn-cancel", + "callback": function() { + } + }]); + + url = seeddms_webroot+"out/out.MoveFolder.php?folderid="+source_id+"&targetid="+target_id; +// document.location = url; + } + }); + + $('div.splash').each(function(index) { + var element = $(this); + var msgtype = element.data('type'); + var timeout = element.data('timeout'); + var msg = element.text(); + noty({ + text: msg, + type: msgtype, + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: (typeof timeout == 'undefined' ? 1500 : timeout) + }); + }); + + $("body").on("click", "span.openpopupbox", function(e) { + $(""+$(e.target).data("href")).toggle(); + e.stopPropagation(); + }); + $("body").on("click", "span.openpopupbox i", function(e) { + $(e.target).parent().click(); + }); + $("body").on("click", "span.openpopupbox span", function(e) { + $(e.target).parent().click(); + }); + $("body").on("click", "span.closepopupbox", function(e) { + $(this).parent().hide(); + e.stopPropagation(); + }); + + $("body").on("mouseenter", "#main-menu-dropfolderlist ul.dropdown-menu li a", function(e) { + $(e.currentTarget).find('.dropfolder-menu-img').css('display', 'inline'); + }); + $("body").on("mouseleave", "#main-menu-dropfolderlist ul.dropdown-menu li a", function(e) { + $(e.currentTarget).find('.dropfolder-menu-img').hide(); + }); + +}); /* }}} */ + +(function( SeedDMSTask, $, undefined ) { /* {{{ */ + var approval_count, review_count, workflow_count; + var timeout = 1000; + var counter = 0; + var tasks = Array( + {name: 'checktasks', interval: 15, func: + checkTasks = function() { + $.ajax({url: seeddms_webroot+'out/out.Tasks.php', + type: 'GET', + dataType: "json", + data: {action: 'mytasks'}, + success: function(data) { + if(data) { + if((typeof data.data.approval != 'undefined' && approval_count != data.data.approval.length) || + (typeof data.data.review != 'undefined' && review_count != data.data.review.length) || + (typeof data.data.workflow != 'undefined' && workflow_count != data.data.workflow.length)) { + // $("#menu-tasks").html('Loading').hide().load('../out/out.Tasks.php?action=menutasks').fadeIn('500') + $('#menu-tasks > div.ajax').trigger('update', {folderid: seeddms_folder}); + approval_count = typeof data.data.approval != 'undefined' ? data.data.approval.length : 0; + review_count = typeof data.data.review != 'undefined' ? data.data.review.length : 0; + workflow_count = typeof data.data.workflow != 'undefined' ? data.data.workflow.length : 0; + } + } + }, + timeout: 3000 + }); + } + } + ); + + SeedDMSTask.add = function(task) { + tasks.push(task); + } + + SeedDMSTask.run = function() { + for(let task of tasks) { + if(counter % task.interval == 0) { +// console.log("Running task '" + task.name + "'"); + task.func(); + } + } + //console.log(counter); + counter++; + timeOutId = setTimeout(SeedDMSTask.run, timeout); + } +}( window.SeedDMSTask = window.SeedDMSTask || {}, jQuery )); /* }}} */