Current Path : /var/www/www-root/data/webdav/www/info.monolith-realty.ru/bitrix/js/fileman/ |
Current File : /var/www/www-root/data/webdav/www/info.monolith-realty.ru/bitrix/js/fileman/fileman_utils.js |
function BXFMSearch(Params) { this.Init(Params); } BXFMSearch.prototype = { Init: function(Params) { if (this.bInited) return true; var _this = this; this.pAddLink = BX('bx_fms_add_lnk'); this.pSearchTbl = BX('bx_fms_tbl'); this.oSearchDialog = Params.oSearchDialog; this.pTabSearch = BX('bx_search_cont'); this.pTabReplace = BX('bx_replace_cont'); this.lang = Params.lang; this.site = Params.site; this.arLastPathes = Params.arLastPathes; this.sessid_get = Params.sessid_get; this.bUseLastValues = true; this.viewMsFilePath = Params.viewMsFilePath; this.viewMsFolderPath = Params.viewMsFolderPath; this.dateFormat = Params.dateFormat; this.pForm = document.forms['bx_search_form']; this.pSearchResultCont = BX('bx_search_res_cont'); this.pSearchFile = BX('bx_search_file'); this.pSearchPhrase = BX('bx_search_phrase'); this.pReplacePhrase = BX('bx_replace_phrase'); this.pSearchDir = BX('bx_search_dir'); this.pSearchSubdir = BX('bx_search_subdir'); this.pSearchDirsToo = BX('bx_search_dirs_too'); this.pSearchEntire = BX('bx_search_entire'); this.pSearchCase = BX('bx_search_case'); this.pInResRow = BX('bx_search_in_res_tr'); this.pInRes = BX('bx_search_in_res'); this.pFDButton = BX('bx_search_fd_but'); // Date this.pSearchDateSel = BX('bx_search_date_sel'); this.pSearchDateFrom = BX('bx_search_date_from'); this.pSearchDateTo = BX('bx_search_date_to'); this.pSearchDateDiv = BX('bx_search_date_div'); // Size this.pSearchSizeSel = BX('bx_search_size_sel'); this.pSearchSizeFrom = BX('bx_search_size_from'); this.pSearchSizeTo = BX('bx_search_size_to'); this.pSearchSizeDiv = BX('bx_search_size_div'); // We want to remember user choise for checkbockses values this.pSearchSubdir.onclick = this.pSearchDirsToo.onclick = this.pSearchEntire.onclick = this.pSearchCase.onclick = function(){_this.SaveConfig();}; this.pAddLink.onclick = function(e) { var bHide = _this.pSearchTbl.className.indexOf('bxfm-d-params-add-hide') == -1; _this.bShowAdvanced = !bHide; if (bHide) BX.addClass(_this.pSearchTbl, 'bxfm-d-params-add-hide'); else BX.removeClass(_this.pSearchTbl, 'bxfm-d-params-add-hide'); _this.oSearchDialog.adjustSizeEx(); _this.SaveConfig(); return false; }; this.pSearchDateSel.onchange = function() { _this.pSearchDateDiv.style.display = this.value == "set" ? "block" : "none"; _this.oSearchDialog.adjustSizeEx(); if (this.value !== 0) { var D1 = new Date(), oDate = new Date(), month = oDate.getMonth(), year = oDate.getFullYear(), date = oDate.getDate(), hours = oDate.getHours(), min = oDate.getMinutes(); _this.pSearchDateTo.value = ""; } if (this.value == 0) { _this.pSearchDateFrom.value = ""; _this.pSearchDateTo.value = ""; } else if(this.value == "day") { D1.setFullYear(year, month, date - 1); _this.pSearchDateFrom.value = _this.FormatDate(D1.getDate(), D1.getMonth(), D1.getFullYear(), hours, min); } else if(this.value == "week") { D1.setFullYear(year, month, date - 7); _this.pSearchDateFrom.value = _this.FormatDate(D1.getDate(), D1.getMonth(), D1.getFullYear(), hours, min); } else if(this.value == "month") { D1.setFullYear(year, month - 1, date); _this.pSearchDateFrom.value = _this.FormatDate(D1.getDate(), D1.getMonth(), D1.getFullYear(), hours, min); } else if(this.value == "year") { D1.setFullYear(year - 1, month, date); _this.pSearchDateFrom.value = _this.FormatDate(D1.getDate(), D1.getMonth(), D1.getFullYear(), hours, min); } }; this.pSearchSizeSel.onchange = function() { _this.pSearchSizeDiv.style.display = this.value == "set" ? "block" : "none"; _this.oSearchDialog.adjustSizeEx(); if (this.value == 0) { _this.pSearchSizeFrom.value = ""; _this.pSearchSizeTo.value = ""; } else if(this.value == "100") { _this.pSearchSizeFrom.value = ""; _this.pSearchSizeTo.value = "100"; } else if(this.value == "100_500") { _this.pSearchSizeFrom.value = "100"; _this.pSearchSizeTo.value = "500"; } else if(this.value == "500") { _this.pSearchSizeFrom.value = "500"; _this.pSearchSizeTo.value = ""; } }; this.pInRes.onclick = function() { var checked = !!this.checked; _this.pFDButton.disabled = _this.pSearchDir.disabled = _this.pSearchSubdir.disabled = checked; }; this.oSiteSel = new BXFMSiteSel({ id: 'site_sel_search', pDiv: BX('bx_search_site_sel'), sites: Params.arSites }); // this.oSearchDir = new BXFMInpSel({ // id: 'dir', // pInput : this.pSearchDir, // Items: this.arLastPathes, // OnChange : function() // { // alert('OnChange'); // }, // NoValueMess: '/' // }); BX.addCustomEvent(oSearchDialog, 'onWindowUnRegister', BX.proxy(this.OnClose, this)); // Set checkboxes and advanced mode section corespond to user preferences if (Params.oUserConfig) { this.bShowAdvanced = Params.oUserConfig.advMode; if (this.bShowAdvanced) BX.removeClass(this.pSearchTbl, 'bxfm-d-params-add-hide'); else BX.addClass(this.pSearchTbl, 'bxfm-d-params-add-hide'); this.pSearchSubdir.checked = !!Params.oUserConfig.bSubdir; this.pSearchDirsToo.checked = !!Params.oUserConfig.bDirsToo; this.pSearchEntire.checked = !!Params.oUserConfig.entire; this.pSearchCase.checked = !!Params.oUserConfig.bCaseSens; } // Clean old enties in search result table this.Request('clean_old', {}, false, false); this.bInited = true; }, OnOpen: function(Params) { this.sSess = Params.ssess || false; this.SetPath(Params.path); // Hide or show row with "Search in result checkbox" this.pInResRow.style.display = Params.bSearch ? "" : "none"; if (Params.bSearch) { if (this.pInRes.checked) this.pFDButton.disabled = this.pSearchDir.disabled = this.pSearchSubdir.disabled = true; } else { this.pInRes.checked = false; } if (Params.lastValues && this.bUseLastValues) { this.bUseLastValues = false; this.pSearchFile.value = Params.lastValues.file || ''; this.pSearchPhrase.value = Params.lastValues.search_phrase || ''; this.pReplacePhrase.value = Params.lastValues.replace_phrase || ''; this.pSearchDir.value = Params.lastValues.dir || ''; this.pSearchSubdir.checked = !!Params.lastValues.subdir; this.pSearchDirsToo.checked = !!Params.lastValues.dirs_too; this.pSearchCase.checked = !!Params.lastValues.case_sens; if (Params.lastValues.date_sel) { this.pSearchDateSel.value = Params.lastValues.date_sel; this.pSearchDateSel.onchange(); if (Params.lastValues.date_from || Params.lastValues.date_to) { this.pSearchDateFrom.value = Params.lastValues.date_from; this.pSearchDateTo.value = Params.lastValues.date_to; } } if (Params.lastValues.size_sel) { this.pSearchSizeSel.value = Params.lastValues.size_sel; this.pSearchSizeSel.onchange(); if (Params.lastValues.size_from || Params.lastValues.size_to) { this.pSearchSizeFrom.value = Params.lastValues.size_from; this.pSearchSizeTo.value = Params.lastValues.size_to; } } } this.pSearchFile.focus(); BX.bind(BX.browser.IsIE() ? document.body : window, "keydown", BX.proxy(this.OnKeyDown, this)); }, OnClose: function() { BX.unbind(BX.browser.IsIE() ? document.body : window, "keydown", BX.proxy(this.OnKeyDown, this)); }, OnKeyDown: function(e) { if (!e) e = window.event; if (window.oBXFileDialog && window.oBXFileDialog.bOpened) return; if (oSearchDialog.isOpen && e.keyCode == 13) return this.Search(); }, Count: function() { var _this = this, postParams = this.GetPostParams(); var onResult = function() { if (!_this.oCountResDialog.isOpen) return; if (window.fmsBtimeout) { postParams.last_path = window.fmsLastPath; _this.count_xhr = _this.Request('count', postParams, onResult); } else { if (_this.oCountResInt) clearInterval(_this.oCountResInt); _this.oCountResIntCount = 0; BX.removeClass(_this.pCountResDiv, 'bxfm-count-wait'); _this.oCountResDialog.SetTitle(FM_MESS.CountEnded); } _this.intCountResult += window.fmsResult; if (window.fmsBstoped) { _this.pReplResCntWarn.style.display = "inline"; _this.pCountResDiv.title = FM_MESS.CountLimitWarn; } else { _this.pReplResCntWarn.style.display = "none"; _this.pCountResDiv.title = ""; } _this.pCountResCnt.innerHTML = _this.intCountResult; }; if (!_this.oCountResDialog) { this.oCountResDialog = new BX.CDialog({ title : FM_MESS.CountProgress, content: '<div id="bxfm_count_res_div" class="bxfm-count-res-div bxfm-count-wait">' + FM_MESS.CountedFiles + ': <span id="bxfm_count_res_cnt">0</span><span id="bxfm_cnt_res_warn" class="bxfm-warn">*</span></div>', height: 125, width: 250, resizable: false, buttons: [BX.CDialog.btnClose] }); this.pCountResCnt = BX('bxfm_count_res_cnt'); this.pCountResDiv = BX('bxfm_count_res_div'); this.pReplResCntWarn = BX('bxfm_cnt_res_warn'); BX.addClass(this.oCountResDialog.PARTS.CONTENT, "bxfm-dialog-content"); if (BX.browser.IsIE()) this.pCountResDiv.style.margin = "3px 0 2px 2px"; } else { // Set counter to Zero _this.pCountResCnt.innerHTML = "0"; _this.pReplResCntWarn.style.display = "none"; _this.pCountResDiv.title = ""; BX.addClass(_this.pCountResDiv, 'bxfm-count-wait'); this.oCountResDialog.SetTitle(FM_MESS.CountProgress); } this.oCountResDialog.Show(); this.intCountResult = 0; // Blink "..." in the title if (this.oCountResInt) clearInterval(this.oCountResInt); this.oCountResIntCount = 0; this.oCountResInt = setInterval(function() { if (_this.oCountResIntCount < 3) { _this.oCountResIntCount++; _this.oCountResDialog.SetTitle(_this.oCountResDialog.PARAMS.title + ' .'); } else { _this.oCountResIntCount = 0; _this.oCountResDialog.SetTitle(FM_MESS.CountProgress); } }, 400); if (this.count_xhr) this.count_xhr.abort(); this.count_xhr = this.Request('count', postParams, onResult); BX.addCustomEvent(this.oCountResDialog, 'onWindowUnRegister', BX.proxy(function() { if(this.count_xhr) this.count_xhr.abort(); }, this)); }, Search: function() { if (this.bReplace) return this.Replace(); var _this = this, postParams = this.GetPostParams(); var onResult = function() { if (!_this.oSearchResDialog.isOpen || _this.bSearchDenied) return; // if (!window.fmsResult) // { // window.fmsBtimeout = false; // window.fmsBstoped = false; // window.fmsResult = []; // } var i, l = window.fmsResult.length, r, c, el, href; // Files or folders was found - display esult div, enable "Show result button" if (l > 0 && _this.arSearchResult.length == 0) { _this.pSearchRes.style.display = "block"; _this.oSearchResDialog.PARAMS.buttons[0].enable(); _this.oSearchResDialog.SetSize({width: 600, height: 400}); _this.oSearchResDialog.adjustPos(); } for(i = 0; i < l; i++) { el = window.fmsResult[i]; _this.arSearchResult.push(el); _this.searchCount += parseInt(el.repl_count); r = _this.pSearchResTable.insertRow(-1); r.title = el.path; //type: foder or file c = r.insertCell(-1); c.appendChild(BX.create('IMG', {props: { src: el.type_src }})); //path c = r.insertCell(-1); c.style.textAlign = 'left'; href = ((el.b_dir ? _this.viewMsFolderPath : _this.viewMsFilePath) + _this.oSiteSel.value).replace('#PATH#', BX.util.urlencode(el.path)); c.appendChild(BX.create('A', {props: {href: href, target: '_blank'}, text: el.path})); if (_this.pSearchPhrase.value != "") c.appendChild(BX.create('SPAN', {props: {className: 'bxfm-search-cnt', title: FM_MESS.SearchInFileTitle}, html: ' (<span>' + parseInt(el.repl_count) + '</span>)'})); //Date c = r.insertCell(-1); c.appendChild(document.createTextNode(el.str_date)); //Size c = r.insertCell(-1); c.appendChild(document.createTextNode(el.str_size)); } if (_this.pSearchPhrase.value == "") { _this.pSearchResCnt.innerHTML = _this.arSearchResult.length || 0; } else { _this.pSearchResCnt.innerHTML = _this.searchCount || 0; _this.pSearchResCntFiles.innerHTML = _this.arSearchResult.length || 0; // Whole count of the replaces } if (window.fmsBtimeout) { postParams.last_path = window.fmsLastPath; _this.xhr = _this.Request('search', postParams, onResult); } else { if (_this.oSearchResInt) clearInterval(_this.oSearchResInt); _this.oSearchResIntCount = 0; // Disable "Stop search" button cause it already finished //_this.oSearchResDialog.PARAMS.buttons[1].disable(); var stopButton = BX("stop"); if(stopButton) stopButton.disabled = true; BX.removeClass(_this.pSearchResDiv, 'bxfm-wait'); _this.oSearchResDialog.PARAMS.buttons[0].enable(); _this.oSearchResDialog.SetTitle(FM_MESS.SearchEnded); } if (window.fmsBstoped) { _this.pSearchResCntWarn.style.display = "inline"; _this.pSearchResDiv.title = FM_MESS.CountLimitWarn; } else { _this.pSearchResCntWarn.style.display = "none"; _this.pSearchResDiv.title = ""; } }; if (!this.oSearchResDialog) { this.oSearchResDialog = new BX.CDialog({ title : FM_MESS.SearchProgress, content: '<div id="bxfm_search_res_div" class="bxfm-search-res-div bxfm-wait"><div class="bxfm-wait-1"></div>' + FM_MESS.Counted + ': <span id="bxfm_search_res_cnt">0</span><span id="bxfm_sres_warn" class="bxfm-warn">*</span><span class="bxfm-only-for-phrase"><br>' + FM_MESS.ReplCountInFiles + ': <span id="bxfm_search_res_files">0</span></span><div class="bxfm-search-res" id="bxfm_search_res"><table><tr class="bxfm-s-res-head"><td class="bxfm-h-type"></td><td class="bxfm-h-path">' + FM_MESS.Path + '</td><td class="bxfm-h-date">' + FM_MESS.Date + '</td><td class="bxfm-h-size">' + FM_MESS.Size + '</td></tr></table></div></div>', height: 125, width: 450, min_height: 220, min_width: 450, buttons: [ new BX.CWindowButton( { title: FM_MESS.ShowRes, id: 'show_res', name: 'show_res', action: function() {_this.DisplaySearchResult();} }), new BX.CWindowButton( { title: FM_MESS.Stop, id: 'stop', name: 'stop', action: function() { if (_this.oSearchResInt) clearInterval(_this.oSearchResInt); _this.oSearchResIntCount = 0; _this.bSearchDenied = true; if(_this.xhr) _this.xhr.abort(); BX.removeClass(_this.pSearchResDiv, 'bxfm-wait'); _this.oSearchResDialog.PARAMS.buttons[0].enable(); _this.oSearchResDialog.SetTitle(FM_MESS.SearchEnded); } }), BX.CDialog.btnClose ] }); BX.addClass(this.oSearchResDialog.PARTS.CONTENT, "bxfm-dialog-content"); this.pSearchResCnt = BX('bxfm_search_res_cnt'); this.pSearchResCntFiles = BX('bxfm_search_res_files'); this.pSearchRes = BX('bxfm_search_res'); this.pSearchResTable = this.pSearchRes.firstChild; this.pSearchResDiv = BX('bxfm_search_res_div'); this.pSearchResCntWarn = BX('bxfm_sres_warn'); if (BX.browser.IsIE()) this.pSearchResDiv.style.margin = "3px 0 2px 2px"; } else { // Return to original view after first showing // Hide result container _this.pSearchRes.style.display = "none"; //_this.oSearchResDialog.DIV.style.height = "125px"; // Set counter to Zero _this.pSearchResCnt.innerHTML = "0"; _this.pSearchResCntFiles.innerHTML = "0"; // Clean result container while (this.pSearchResTable.rows[1]) this.pSearchResTable.deleteRow(-1); this.pSearchResCntWarn.style.display = "none"; this.pSearchResDiv.title = ""; BX.addClass(this.pSearchResDiv, 'bxfm-wait'); BX.removeClass(this.pSearchResDiv, 'bxfm-with-phrase'); _this.oSearchResDialog.SetTitle(FM_MESS.SearchProgress); _this.oSearchResDialog.PARAMS.buttons[1].enable(); _this.oSearchResDialog.SetSize({width: 600, height: 125}); _this.oSearchResDialog.adjustPos(); } this.oSearchResDialog.Show(); this.arSearchResult = []; this.searchCount = 0; this.bSearchDenied = false; this.oSearchResDialog.PARAMS.buttons[0].disable(); if (this.pSearchPhrase.value != "") BX.addClass(this.pSearchResDiv, 'bxfm-with-phrase'); // Blink "..." in the title this.oSearchResIntCount = 0; if (this.oSearchResInt) clearInterval(this.oSearchResInt); this.oSearchResInt = setInterval(function() { if (_this.oSearchResIntCount < 3) { _this.oSearchResIntCount++; _this.oSearchResDialog.SetTitle(_this.oSearchResDialog.PARAMS.title + ' .'); } else { _this.oSearchResIntCount = 0; _this.oSearchResDialog.SetTitle(FM_MESS.SearchProgress); } }, 400); if (this.xhr) this.xhr.abort(); this.xhr = this.Request('search', postParams, onResult); BX.addCustomEvent(this.oSearchResDialog, 'onWindowUnRegister', BX.proxy(function() { if(this.xhr) this.xhr.abort(); }, this)); BX.addCustomEvent(this.oSearchResDialog, 'onWindowResizeExt', function(oSize) { var w = oSize.width - 35; if (BX.browser.IsIE()) { w -= 5; } if (w > 0) _this.pSearchRes.style.width = w + "px"; }); }, Replace: function() { BX.WindowManager.disableKeyCheck(); if (this.pSearchPhrase.value == "") { alert(FM_MESS.ReplacePhraseWarn); this.pSearchPhrase.focus(); return setTimeout(function(){BX.WindowManager.enableKeyCheck();}, 500); } if (!confirm(FM_MESS.ReplaceConfirm)) return setTimeout(function(){BX.WindowManager.enableKeyCheck();}, 500); BX.WindowManager.enableKeyCheck(); var _this = this, postParams = this.GetPostParams(); var onResult = function() { if (!_this.oReplaceResDialog.isOpen || _this.bReplaceDenied) return; var i, l = window.fmsResult.length, r, c, el; // Files or folders was found - display result div, enable "Show result button" if (l > 0 && _this.arReplaceResult.length == 0) { _this.pReplRes.style.display = "block"; _this.oReplaceResDialog.PARAMS.buttons[0].enable(); _this.oReplaceResDialog.SetSize({width: 600, height: 400}); _this.oReplaceResDialog.adjustPos(); } for(i = 0; i < l; i++) { el = window.fmsResult[i]; _this.arReplaceResult.push(el); _this.replaceCount += parseInt(el.repl_count); r = _this.pReplResTable.insertRow(-1); r.title = el.path; //type: foder or file c = r.insertCell(-1); c.appendChild(BX.create('IMG', {props: { src: el.type_src }})); //path c = r.insertCell(-1); c.style.textAlign = 'left'; href = ((el.b_dir ? _this.viewMsFolderPath : _this.viewMsFilePath) + _this.oSiteSel.value).replace('#PATH#', BX.util.urlencode(el.path)); c.appendChild(BX.create('A', {props: {href: href, target: '_blank'}, text: el.path})); c.appendChild(BX.create('SPAN', {props: {className: 'bxfm-rep-cnt', title: FM_MESS.ReplInFileTitle}, html: ' (<span>' + parseInt(el.repl_count) + '</span>)'})); //Date c = r.insertCell(-1); c.appendChild(document.createTextNode(el.str_date)); //Size c = r.insertCell(-1); c.appendChild(document.createTextNode(el.str_size)); } _this.pReplResFilesCnt.innerHTML = _this.arReplaceResult.length || 0; // Files with replaces _this.pReplResCnt.innerHTML = _this.replaceCount || 0; // Whole count of the replaces if (window.fmsBtimeout) { postParams.last_path = window.fmsLastPath; _this.replace_xhr = _this.Request('replace', postParams, onResult); } else { if (_this.oReplResInt) clearInterval(_this.oReplResInt); _this.oReplResIntCount = 0; // Disable "Stop replace" button cause it already finished //_this.oReplaceResDialog.PARAMS.buttons[1].disable(); var stopButton = BX("stop"); if(stopButton) stopButton.disabled = true; BX.removeClass(_this.pReplResDiv, 'bxfm-wait'); _this.oReplaceResDialog.PARAMS.buttons[0].enable(); _this.oReplaceResDialog.SetTitle(FM_MESS.ReplEnded); } if (window.fmsBstoped) { _this.pReplResCntWarn.style.display = "inline"; _this.pReplResDiv.title = FM_MESS.CountLimitWarn; } else { _this.pReplResCntWarn.style.display = "none"; _this.pReplResDiv.title = ""; } }; if (!this.oReplaceResDialog) { this.oReplaceResDialog = new BX.CDialog({ title : FM_MESS.ReplProgress, content: '<div id="bxfm_repl_res_div" class="bxfm-search-res-div bxfm-wait"><div class="bxfm-wait-1"></div>' + FM_MESS.ReplCounted + ': <span id="bxfm_repl_res_cnt">0</span><br>' + FM_MESS.ReplCountInFiles + ': <span id="bxfm_repl_res_files">0</span><span id="bxfm_repl_res_warn" class="bxfm-warn">*</span><div class="bxfm-search-res" id="bxfm_repl_res"><table><tr class="bxfm-s-res-head"><td class="bxfm-h-type"></td><td class="bxfm-h-path">' + FM_MESS.Path + '</td><td class="bxfm-h-date">' + FM_MESS.Date + '</td><td class="bxfm-h-size">' + FM_MESS.Size + '</td></tr></table></div></div>', height: 150, width: 450, min_height: 250, min_width: 450, buttons: [ new BX.CWindowButton( { title: FM_MESS.ReplShowRes, id: 'show_res', name: 'show_res', action: function() {_this.DisplayReplaceResult();} }), new BX.CWindowButton( { title: FM_MESS.Stop, id: 'stop', name: 'stop', action: function() { if (_this.oReplResInt) clearInterval(_this.oReplResInt); _this.oReplResIntCount = 0; _this.bReplaceDenied = true; if(_this.replace_xhr) _this.replace_xhr.abort(); BX.removeClass(_this.pReplResDiv, 'bxfm-wait'); _this.oReplaceResDialog.PARAMS.buttons[0].enable(); _this.oReplaceResDialog.SetTitle(FM_MESS.ReplEnded); } }), BX.CDialog.btnClose ] }); BX.addClass(this.oReplaceResDialog.PARTS.CONTENT, "bxfm-dialog-content"); this.pReplResCnt = BX('bxfm_repl_res_cnt'); this.pReplResFilesCnt = BX('bxfm_repl_res_files'); this.pReplRes = BX('bxfm_repl_res'); this.pReplResTable = this.pReplRes.firstChild; this.pReplResDiv = BX('bxfm_repl_res_div'); this.pReplResCntWarn = BX('bxfm_repl_res_warn'); if (BX.browser.IsIE()) this.pReplResDiv.style.margin = "4px 2px 2px 0px"; } else { // Return to original view after first showing // Hide result container _this.pReplRes.style.display = "none"; // Set counter to Zero _this.pReplResCnt.innerHTML = "0"; _this.pReplResFilesCnt.innerHTML = "0"; // Clean result container while (this.pReplResTable.rows[1]) this.pReplResTable.deleteRow(-1); _this.pReplResCntWarn.style.display = "none"; _this.pReplResDiv.title = ""; BX.addClass(this.pReplResDiv, 'bxfm-wait'); this.oReplaceResDialog.SetTitle(FM_MESS.ReplProgress); this.oReplaceResDialog.PARAMS.buttons[1].enable(); this.oReplaceResDialog.SetSize({width: 600, height: 120}); this.oReplaceResDialog.adjustPos(); } this.oReplaceResDialog.Show(); this.arReplaceResult = []; this.replaceCount = 0; this.bReplaceDenied = false; this.oReplaceResDialog.PARAMS.buttons[0].disable(); // Blink "..." in the title this.oReplResIntCount = 0; if (this.oReplResInt) clearInterval(this.oReplResInt); this.oReplResInt = setInterval(function() { if (_this.oReplResIntCount < 3) { _this.oReplResIntCount++; _this.oReplaceResDialog.SetTitle(_this.oReplaceResDialog.PARAMS.title + ' .'); } else { _this.oReplResIntCount = 0; _this.oReplaceResDialog.SetTitle(FM_MESS.ReplProgress); } }, 400); if (this.replace_xhr) this.replace_xhr.abort(); this.replace_xhr = this.Request('replace', postParams, onResult); BX.addCustomEvent(this.oReplaceResDialog, 'onWindowUnRegister', BX.proxy(function() { if(this.replace_xhr) this.replace_xhr.abort(); }, this)); BX.addCustomEvent(this.oReplaceResDialog, 'onWindowResizeExt', function(oSize) { var w = oSize.width - 35; _this.pReplRes.style.width = w + "px"; }); }, GetPostParams: function() { return { file: this.pSearchFile.value, phrase: this.pSearchPhrase.value, replace_phrase: this.pReplacePhrase.value, dir: this.pSearchDir.value, subdir: this.pSearchSubdir.checked ? 1 : 0, date_from: this.pSearchDateFrom.value, date_to: this.pSearchDateTo.value, size_from: this.pSearchSizeFrom.value, size_to: this.pSearchSizeTo.value, entire: this.pSearchEntire.checked ? 1 : 0, case_sens: this.pSearchCase.checked ? 1 : 0, dirs_too: this.pSearchDirsToo.checked ? 1 : 0, ssess: this.sSess ? this.sSess : 0, in_result: this.pInRes.checked ? 1 : 0 }; }, DisplayReplaceResult: function() { this.pSearchResultCont.appendChild(BX.create("INPUT", {props: {name: "is_replace", type: "hidden", value: "Y"}})); this.DisplaySearchResult(this.arReplaceResult); }, DisplaySearchResult: function(arResult) { if (typeof arResult != 'object') // Search result by default arResult = this.arSearchResult; var i, l = arResult.length, name, el; for (i = 0; i < l; i++) { name = "sres[" + i + "]"; el = arResult[i]; this.pSearchResultCont.appendChild(BX.create("INPUT", {props: {name: name + "[path]", type: "hidden", value: el.path}})); this.pSearchResultCont.appendChild(BX.create("INPUT", {props: {name: name + "[b_dir]", type: "hidden", value: el.b_dir}})); this.pSearchResultCont.appendChild(BX.create("INPUT", {props: {name: name + "[size]", type: "hidden", value: el.size}})); this.pSearchResultCont.appendChild(BX.create("INPUT", {props: {name: name + "[time]", type: "hidden", value: el.time}})); } this.pForm.submit(); }, Request : function(action, postParams, callBack, bShowWaitWin) { bShowWaitWin = bShowWaitWin !== false; if (bShowWaitWin) BX.showWait(); var actionUrl = '/bitrix/admin/fileman_admin.php?lang=' + this.lang + "&fu_action=" + action + "&site=" + this.site + "&" + this.sessid_get + "&fu_site=" + this.oSiteSel.value; return BX.ajax.post(actionUrl, postParams || {}, function(result) { if (bShowWaitWin) BX.closeWait(); if(callBack) setTimeout(function(){callBack(result);}, 100); } ); }, SetTab: function(tabId) { var oBut = this.oSearchDialog.PARAMS.buttons[0]; if (tabId == 'search') { this.pTabSearch.appendChild(this.pTabReplace.firstChild); oBut.btn.value = oBut.title = FM_MESS.Find; this.bReplace = false; } else { this.pTabReplace.appendChild(this.pTabSearch.firstChild); oBut.btn.value = oBut.title = FM_MESS.Replace; this.bReplace = true; } this.oSearchDialog.adjustSizeEx(); }, SetPath: function(path) { this.pSearchDir.value = path; }, FormatDate: function(d, m, y, h, min) { var str = this.dateFormat; str = str.replace(/DD/ig, this.ZeroInt(d)); str = str.replace(/MM/ig, this.ZeroInt(m + 1)); // JS count month from 0 str = str.replace(/YY(YY)?/ig, y); if(typeof h != undefined && typeof min != undefined) str += " " + h + ":" + min + ":00"; return str; }, ZeroInt: function(x) { x = parseInt(x, 10); if (isNaN(x)) x = 0; return x < 10 ? '0' + x.toString() : x.toString(); }, SaveConfig: function() { this.Request( 'search_save_config', { adv_mode: this.bShowAdvanced ? 1 : 0, subdir: this.pSearchSubdir.checked ? 1 : 0, entire: this.pSearchEntire.checked ? 1 : 0, case_sens: this.pSearchCase.checked ? 1 : 0, dirs_too: this.pSearchDirsToo.checked ? 1 : 0 }, false, false); } }; function BXFMServerPerm(Params) { this.Params = Params; this.Params.bWindows = false; this.Init(); } BXFMServerPerm.prototype = { Init: function() { var _this = this; this.pButSave = BX("bx_sp_save"); this.pButApply = BX("bx_sp_apply"); this.pButCancel = BX("bx_sp_cancel"); this.pNoteSuccess = BX("bxsp_note_success"); this.pRecursive = BX('bxsp_recurcive'); this.InProcessMess = FM_MESS.InProcess + '...'; this.pNoteErrors = BX('bxsp_note_errors'); this.pNoteErrorsCont = BX('bxsp_note_errors_cont'); this.pButSave.onclick = function() {return _this.Process(true);}; this.pButApply.onclick = function() {return _this.Process(false);}; this.pButCancel.onclick = function() { if (_this.xhr) // Stop { if(_this.xhr) _this.xhr.abort(); _this.xhr = false; _this.bOnResultDenied = true; if (_this.pCurValDiff) _this.pCurValDiff.style.display = "none"; _this.pButSave.disabled = _this.pButApply.disabled = false; _this.pButCancel.value = FM_MESS.Return; _this.pButCancel.Title = FM_MESS.ReturnTitle; for (var i = 1, rl = _this.pFileList.rows.length; i < rl; i++) { cell = _this.pFileList.rows[i].cells[3]; if (cell.innerHTML == _this.InProcessMess) cell.innerHTML = FM_MESS.Stoped; } } else // Cancell, return { window.location = _this.Params.backUrl; } }; this.pFileList = BX("bxsp_file_list"); this.pCurValDiff = BX("bxsp_cur_val_diff"); var i, k; this.arOwners = ['owner', 'group', 'public']; this.arFields = {}; this.pResVal = BX('bxsp_res_value'); this.pResVal.onblur = BX.proxy(this.SetValue2Checkboxes, this); this.pResVal.onkeyup = function() { if (this.value.length >= 3) _this.SetValue2Checkboxes(); }; for (i = 0; i < 3; i++) { k = this.arOwners[i]; this.arFields[k] = { read: BX('bxsp_' + k + '_read'), write: BX('bxsp_' + k + '_write'), exec: BX('bxsp_' + k + '_exec'), value: BX('bxsp_' + k + '_value') }; this.arFields[k].read.onclick = this.arFields[k].write.onclick = this.arFields[k].exec.onclick = BX.proxy(this.ChOnChange, this); } if (this.Params.currentValue) { this.pResVal.value = this.Params.currentValue; this.SetValue2Checkboxes(); } }, ChOnChange: function() { var resVal = '', i, k, val; for (i = 0; i < 3; i++) { k = this.arOwners[i]; val = (this.arFields[k].read.checked ? '1' : '0') + (this.arFields[k].write.checked ? '1' : '0') + (this.arFields[k].exec.checked ? '1' : '0'); val = parseInt(val, 2); this.arFields[k].value.value = val; resVal += val; } this.pResVal.value = resVal; }, SetValue2Checkboxes: function() { var i, k, val, resVal2 = '',binVal, resVal = this.pResVal.value || ''; if (resVal.length != 3) resVal = '000'; for (i = 0; i < 3; i++) { val = parseInt(resVal.substr(i, 1)); if (isNaN(val) || val > 7 || val < 0) val = 0; resVal2 += val.toString(); k = this.arOwners[i]; this.arFields[k].value.value = val; binVal = val.toString(2); if (binVal.length == 1) binVal = '00' + binVal; if (binVal.length == 2) binVal = '0' + binVal; this.arFields[k].read.checked = binVal.substr(0, 1) == 1; this.arFields[k].write.checked = binVal.substr(1, 1) == 1; this.arFields[k].exec.checked = binVal.substr(2, 1) == 1; } this.pResVal.value = resVal2; }, Request : function(action, postParams, callBack, bShowWaitWin) { bShowWaitWin = bShowWaitWin !== false; if (bShowWaitWin) BX.showWait(); return BX.ajax.post('/bitrix/admin/fileman_server_access.php?lang=' + this.Params.lang + "&fu_action=" + action + "&site=" + this.Params.site + "&" + this.Params.sessid_get, postParams || {}, function(result) { if (bShowWaitWin) BX.closeWait(); if(callBack) setTimeout(function(){callBack(result);}, 100); } ); }, Process: function(bSave) { var j, i, l = this.Params.arFiles.length, files = [], rl = this.pFileList.rows.length, _this = this; this.bOnResultDenied = false; for (i = 0; i < l; i++) files.push(this.Params.arFiles[i]['NAME']); for (i = 1; i < rl; i++) this.pFileList.rows[i].cells[3].innerHTML = this.InProcessMess; this.pNoteSuccess.style.display = "none"; this.pNoteErrors.style.display = "none"; BX.cleanNode(this.pNoteErrorsCont); BX.removeClass(this.pFileList, "bxsp-file-list-init"); var postParams = { files: files, recurcive: (this.pRecursive && this.pRecursive.checked) ? "Y" : "N", path: this.Params.path }; if (this.Params.bSearch) { postParams.search = "Y"; postParams.ssess = this.Params.searchSess; } postParams.res_value = this.pResVal.value; var onResult = function(result) { if (_this.bOnResultDenied) return; var i, l = window.spResult.length, r, c, el, bHandeled, valHtml, pRow, pStatusCell, pNextRow, newRowIndex, pNewRow, pNameCell, j, itemPath, n = _this.Params.arFiles.length; for(i = 0; i < l; i++) { el = window.spResult[i][0]; bHandeled = false; for (j = 0; j < n; j++) { itemPath = _this.Params.arFiles[j]["PATH"]; valHtml = _this.pResVal.value; if (el == itemPath) // Same element { pRow = BX("bxsp_file_row_" + j); pRow.cells[2].innerHTML = "<b>" + valHtml + "</b>"; pRow.cells[2].title = ''; if (window.spResult[i][1]) pRow.cells[3].innerHTML = "<span class='bxsp-green'>" + FM_MESS.Ok + "</span>"; else pRow.cells[3].innerHTML = "<span class='bxsp-red'>" + FM_MESS.Error + "</span>"; bHandeled = true; break; } } if (!bHandeled && !window.spResult[i][1]) { _this.pNoteErrors.style.display = "block"; _this.pNoteErrorsCont.appendChild(BX.create("DIV", {text: el})); } } if (window.spBtimeout) { postParams.last_path = window.spLastPath; _this.xhr = _this.Request('change_perms', postParams, onResult); } else { if (_this.pCurValDiff) _this.pCurValDiff.style.display = "none"; _this.pNoteSuccess.style.display = "block"; _this.pButSave.disabled = _this.pButApply.disabled = false; _this.pButCancel.value = FM_MESS.Return; _this.pButCancel.Title = FM_MESS.ReturnTitle; _this.xhr = false; if (bSave) setTimeout(function(){window.location = _this.Params.backUrl;}, 500); } }; if (this.xhr) this.xhr.abort(); this.xhr = this.Request('change_perms', postParams, onResult); this.pButSave.disabled = this.pButApply.disabled = true; this.pButCancel.value = FM_MESS.Stop; this.pButCancel.Title = FM_MESS.StopTitle; return false; } }; function BXFMCopy(Params) { this.Init(Params); } BXFMCopy.prototype = { Init: function(Params) { if (this.bInited) return true; this.oCopyDialog = Params.oCopyDialog; BX.addClass(this.oCopyDialog.PARTS.CONTENT, "bx-fm-copy-dialog"); BX.cleanNode(this.oCopyDialog.PARTS.CONTENT_DATA); this.oCopyDialog.PARTS.CONTENT_DATA.appendChild(BX('bx_copy_dialog')); this.arLastPathes = Params.arLastPathes; var _this = this; this.pAddLink = BX('bx_copy_add_lnk'); this.pCopyTbl = BX('bx_copy_table'); this.pFilelist = BX('bx_copy_file_list'); this.pCopyTo = BX('bx_copy_to'); // Case options this.pCaseAsk = BX("bx_copy_ask_user"); this.pCaseReplace = BX("bx_copy_replace"); this.pCaseAutoRename = BX("bx_copy_auto_rename"); this.pCaseSkip = BX("bx_copy_skip"); this.pCaseAsk.onclick = this.pCaseReplace.onclick = this.pCaseAutoRename.onclick = this.pCaseSkip.onclick = function() { if (this.checked) _this.caseOption = this.value; _this.SaveConfig(); }; this.lang = Params.lang; this.site = Params.site; this.sessid_get = Params.sessid_get; BX('bx_copy_dialog').style.display = "block"; this.viewMsFilePath = Params.viewMsFilePath; this.viewMsFolderPath = Params.viewMsFolderPath; this.oSiteSel = new BXFMSiteSel({ id: 'site_sel_copy', pDiv: BX('bx_copy_site_sel'), sites: Params.arSites }); this.oCopyTo = new BXFMInpSel({ id: 'cm_copy_to', pInput : this.pCopyTo, Items: this.arLastPathes }); this.pAddLink.onclick = function() { var cn = 'bx-copy-cont-tbl-add-hide', bHide = _this.pCopyTbl.className.indexOf(cn) == -1; _this.bShowAdvanced = !bHide; if (bHide) BX.addClass(_this.pCopyTbl, cn); else BX.removeClass(_this.pCopyTbl, cn); _this.oCopyDialog.adjustSizeEx(); _this.SaveConfig(); return false; }; this.caseOption = 'ask'; if (Params.oUserConfig) { this.bShowAdvanced = Params.oUserConfig.advMode; if (this.bShowAdvanced) BX.removeClass(_this.pCopyTbl, 'bx-copy-cont-tbl-add-hide'); else BX.addClass(_this.pCopyTbl, 'bx-copy-cont-tbl-add-hide'); this.caseOption = Params.oUserConfig.caseOption || 'ask'; } switch(this.caseOption) { case "ask": this.pCaseAsk.checked = true; break; case "replace": this.pCaseReplace.checked = true; break; case "auto_rename": this.pCaseAutoRename.checked = true; break; case "skip": this.pCaseSkip.checked = true; break; } BX.addCustomEvent(this.oCopyDialog, 'onWindowUnRegister', BX.proxy(this.OnClose, this)); this.bInited = true; }, OnOpen: function(Params) { this.bCopy = Params.bCopy; this.arFiles = []; this.curPath = Params.path; this.bSearch = !!Params.bSearch; this.searchSess = Params.ssess; if (typeof Params.arFiles == 'object') this.arFiles = Params.arFiles; var oBut = this.oCopyDialog.PARAMS.buttons[0]; if (this.bCopy) { this.oCopyDialog.SetTitle(FM_MESS.CopyTitle); oBut.btn.value = oBut.title = FM_MESS.Copy; } else { this.oCopyDialog.SetTitle(FM_MESS.MoveTitle); oBut.btn.value = oBut.title = FM_MESS.Move; } // Clean filelist BX.cleanNode(this.pFilelist); var i, l = this.arFiles.length; for (i = 0; i < l; i++) { this.pFilelist.appendChild(BX.create("A", {props: {href: this.GetViewUrl(this.arFiles[i]), target: '_blank'}, text: this.GetFileName(this.arFiles[i].path)})); if (i == 1 && l > 3) { this.pFilelist.appendChild(document.createTextNode(" (" + FM_MESS.More.replace("#COUNT#", parseInt(l - i - 1)) + ")")); break; } else if (i < l - 1) { this.pFilelist.appendChild(document.createTextNode(", ")); } } this.oCopyDialog.adjustSizeEx(); BX.bind(BX.browser.IsIE() ? document.body : window, "keydown", BX.proxy(this.OnKeyDown, this)); }, OnClose: function() { BX.unbind(BX.browser.IsIE() ? document.body : window, "keydown", BX.proxy(this.OnKeyDown, this)); }, OnKeyDown: function(e) { if (!e) e = window.event; if (window.oBXFileDialog && window.oBXFileDialog.bOpened) return; if (this.oCopyDialog.isOpen && e.keyCode == 13 && (!this.oAskUserDialog || !this.oAskUserDialog.isOpen)) return this.Process(); }, Process: function(Params) { var _this = this, action = this.bCopy ? 'copy' : 'move', postParams = { case_option: this.caseOption, files: this.arFiles, copy_to: this.pCopyTo.value }, onResult = function() { if (window.BXFM_NoCopyToDir) { if (window.BXFM_NoCopyToDir == "ask_user" && confirm(FM_MESS.NoFolder.replace('#FOLDER#', _this.pCopyTo.value))) { postParams.create_copy_to = "Y"; _this.Request(action, postParams, onResult); } else if(window.BXFM_NoCopyToDir == "access_denied") { alert(FM_MESS.NoFolderNoAccess.replace('#FOLDER#', _this.pCopyTo.value)); } window.BXFM_result = null; window.BXFM_NoCopyToDir = null; } //'FileExist' if (window.BXFM_fileExist) { // Run "Ask User Dialog" _this.ShowAskUserDialog(window.BXFM_fileExist); window.BXFM_fileExist = null; } // Finish if(window.BXFM_result) { var errorMess = ""; // Errors occured during if (window.BXFM_result.status != 'ok') { for (var i = 0, l = window.BXFM_result.errors.length; i < l; i++) errorMess += window.BXFM_result.errors[i] + "\n"; } // Display errors if (errorMess != "") { alert(errorMess); } else { // Files was moved and we have to refresh current dir if (!_this.bCopy || _this.pCopyTo.value === _this.curPath) window.location = _this.bSearch ? window.location : (_this.viewMsFolderPath + _this.site).replace('#PATH#', BX.util.urlencode(_this.curPath)); _this.oCopyDialog.Close(); } } }; if (Params) { postParams.uc_answer = Params.userCase; postParams.uc_to_all = Params.applyToAll; postParams.uc_last_path = Params.handledFilePath; } if (this.bSearch) { postParams.search = "Y"; postParams.ssess = this.searchSess; } window.BXFM_noCopyToDir = window.BXFM_fileExist = window.BXFM_result = null; this.Request(action, postParams, onResult); }, GetFileName: function(path) { var name = path, i = path.lastIndexOf("/"); if (i !== -1) name = path.substr(i + 1); return name; }, GetViewUrl: function(file, multisite) { var multisite = multisite || [false, '']; if (multisite[0]) return ((!!file.isDir ? this.viewMsFolderPath : this.viewMsFilePath) + multisite[1]).replace('#PATH#', BX.util.urlencode(file.path)); return ((!!file.isDir ? this.viewMsFolderPath : this.viewMsFilePath) + this.site).replace('#PATH#', BX.util.urlencode(file.path)); }, SaveConfig: function() { this.Request( 'copy_save_config', { adv_mode: this.bShowAdvanced ? 1 : 0, case_option: this.caseOption }, false, false); }, Request : function(action, postParams, callBack, bShowWaitWin) { bShowWaitWin = bShowWaitWin !== false; if (bShowWaitWin) BX.showWait(); var actionUrl = '/bitrix/admin/fileman_admin.php?lang=' + this.lang + "&fu_action=" + action + "&site=" + this.site + "&" + this.sessid_get + "&fu_site=" + this.oSiteSel.value; return BX.ajax.post(actionUrl, postParams || {}, function(result) { if (bShowWaitWin) BX.closeWait(); if(callBack) setTimeout(function(){callBack(result);}, 100); } ); }, ShowAskUserDialog: function(Params) { var _this = this; if (!this.oAskUserDialog) { this.oAskUserDialog = new BX.CAdminDialog({ title : "", content: " ", height: 240, width: 600, resizable: false }); this.oAskUserDialog.SetButtons([ new BX.CWindowButton( { title: FM_MESS.Replace, name: 'replace', id: 'ask_replace', action: function(){_this.UserAnswer('replace');} }), new BX.CWindowButton( { title: FM_MESS.Skip, name: 'skip', action: function(){_this.UserAnswer('skip');} }), new BX.CWindowButton( { title: FM_MESS.Rename, name: 'rename', action: function(){_this.UserAnswer('auto_rename');} }), this.oAskUserDialog.btnCancel ]); BX.addClass(this.oAskUserDialog.PARTS.CONTENT, "bx-fm-copy-dialog"); BX.addClass(this.oAskUserDialog.PARTS.FOOT, "bx-core-dialog-foot-ask"); //BX.cleanNode(this.oAskUserDialog.PARTS.CONTENT); setTimeout(function() { var pAskPialog = BX('bx_copy_ask_dialog'); _this.oAskUserDialog.SetContent(pAskPialog); pAskPialog.style.display = "block"; _this.pAskToAllCont = pAskPialog.appendChild(BX.create("DIV", {props: {className: "bx-copy-to-all" }, html: "<table><tr><td><input type='checkbox' id='bx_copy_ask_to_all'></td><td><label for='bx_copy_ask_to_all'>" + FM_MESS.ToAll + "</label></td></tr></table>"})); _this.oAskUserDialog.adjustSizeEx(); BX.adminPanel.modifyFormElements(pAskPialog); }, 50); this.pAskFileName = BX("bx_copy_ask_file_name"); this.pAskFolderName = BX("bx_copy_ask_folder"); this.pAskSizeRow = BX("bx_copy_ask_size_row"); this.pAskFileNew = {pName: BX("bx_copy_ask_file1"), pSize: BX("bx_copy_ask_size1"), pDate: BX("bx_copy_ask_date1")}; this.pAskFileOld = {pName: BX("bx_copy_ask_file2"), pSize: BX("bx_copy_ask_size2"), pDate: BX("bx_copy_ask_date2")}; this.pNewNameCont = BX('bxc_ask_nn_cont1'); this.pRenBut = this.oAskUserDialog.PARAMS.buttons[2].btn; this.pRenBut.onmouseover = function() { _this._NewNamebShow = true; _this._ShadeIn(true); }; this.pRenBut.onmouseout = function() { _this._NewNamebShow = false; setTimeout(function(){_this._ShadeIn(false);}, 3000); }; BX.addCustomEvent(this.oAskUserDialog, 'onWindowUnRegister', function() { _this.oCopyTo.bDenyOpenPopup = false; }); } this.oAskUserDialog.Show(); this.oCopyTo.bDenyOpenPopup = true; this.oAskUserDialog.adjustSizeEx(); //this.oAskUserDialog.PARTS.CONTENT.style.height = BX.browser.IsIE() ? "160px" : "170px"; this.oAskUserDialog.SetTitle(Params.fileNew.bDir ? FM_MESS.FolderExistTitle : FM_MESS.FileExistTitle); // Copy to the same directory - disable "Replace" button var replaceButton = BX("ask_replace"); if (this.curPath.replace(/[\s\r\n\/]+$/g, '') == this.pCopyTo.value.replace(/[\s\r\n\/]+$/g, '') && replaceButton) replaceButton.disabled = true; else replaceButton.disabled = false; if (this.arFiles.length <= 1) // Hide skip button this.oAskUserDialog.PARAMS.buttons[1].btn.style.display = "none"; else // Show skip button this.oAskUserDialog.PARAMS.buttons[1].btn.style.display = ""; setTimeout(function() { _this.pAskToAllCont.style.marginLeft = parseInt(_this.oAskUserDialog.PARAMS.buttons[0].btn.offsetLeft) + "px"; BX('bx_copy_ask_to_all').disabled = !!(_this.arFiles.length <= 1); }, 200); var multisite = [false, '']; if (Params.fileNew.site && Params.fileOld.site && Params.fileNew.site !== Params.fileOld.site) multisite = [true, Params.fileOld.site]; this.pAskFileName.innerHTML = Params.fileNew.name; this.pAskFolderName.innerHTML = this.pCopyTo.value; this.pAskFileOld.pName.innerHTML = this.pAskFileOld.pName.title = Params.fileOld.name; this.pAskFileOld.pName.href = this.GetViewUrl({ 'isDir' : Params.fileOld.bDir, 'path' : Params.fileOld.path }, multisite); this.pAskFileOld.pDate.innerHTML = Params.fileOld.date; this.pAskFileNew.pName.innerHTML = this.pAskFileNew.pName.title = Params.fileNew.name; this.pAskFileNew.pName.href = this.GetViewUrl({ 'isDir' : Params.fileNew.bDir, 'path' : Params.fileNew.path }); this.pAskFileNew.pDate.innerHTML = Params.fileNew.date; this.oAskUserDialog.newFilePath = Params.fileNew.path; if (Params.fileNew.size == '-') { this.pAskSizeRow.style.display = 'none'; } else { this.pAskSizeRow.style.display = ''; this.pAskFileOld.pSize.innerHTML = Params.fileOld.size; this.pAskFileNew.pSize.innerHTML = Params.fileNew.size; } this.pNewNameCont.innerHTML = this.pNewNameCont.title = Params.fileNew.alt_name; this.pRenBut.title = FM_MESS.RenameTitle.replace("#NEW_NAME#", Params.fileNew.alt_name); }, UserAnswer: function(userCase) { this.Process({ userCase: userCase, applyToAll: BX('bx_copy_ask_to_all').checked ? 1 : 0, handledFilePath: this.oAskUserDialog.newFilePath }); this.oAskUserDialog.Close(); }, _ShadeIn: function(bShow) { if (this._NewNamebShow != bShow) return; var _this = this; if (this._shadeInInterval) { clearInterval(this._shadeInInterval); this._shadeInInterval = false; } var shadeState = bShow ? 0 : 3; this._shadeInInterval = setInterval(function() { if (bShow) shadeState++; else shadeState--; _this.pNewNameCont.className = "bx-copy-new-name"+ " bxcnn-" + shadeState; if (shadeState == 0 || shadeState == 3) { clearInterval(_this._shadeInInterval); _this._shadeInInterval = false; } }, 100); } }; var BXFMInpSel = function(Params) { if (!Params.Items || !Params.Items.length || !Params.pInput) return; if (Params.popupWidth && !isNaN(parseInt(Params.popupWidth))) this.popupWidth = parseInt(Params.popupWidth); this.id = Params.id; this.Items = Params.Items; this.pInput = Params.pInput; this.posCorrection = Params.posCorrection || {left: 2, top: 21}; this.onChange = typeof Params.OnChange == 'function' ? Params.OnChange : false; this.onEnterPress = typeof Params.OnEnterPress == 'function' ? Params.OnEnterPress : false; this.NoValueMess = Params.NoValueMess || ''; this.selItemInd = false; BX.addClass(this.pInput, "bxfm-is-inp"); var _this = this; this.pInput.onclick = function(e) { if (_this.selItemInd !== false) _this.DeSelectItem(_this.selItemInd); if (this.value == _this.NoValueMess) { BX.removeClass(this, "bxfm-is-label"); this.value = ''; } else if(this.value != "") { _this.bCheckValue = true; _this.CheckValue(false); } _this.ShowPopup(); return BX.PreventDefault(e); }; this.pInput.onfocus = function() { if (this.value == _this.NoValueMess) { BX.removeClass(this, "bxfm-is-label"); this.value = ''; } //_this.ShowPopup(); }; this.pInput.onblur = function() { if (!_this.bPopupShowed) _this.OnChange(); }; if (this.pInput.value == '') { this.OnChange(false); } this.pInput.autocomplete="off"; this.pInput.onkeyup = function(e) { if (_this.bDenyOpenPopup) return true; if (!e) e = window.event; if (!e.altKey && !e.ctrlKey && e.keyCode != 17 && e.keyCode != 18 && e.keyCode != 16 && e.keyCode != 27 && e.keyCode != 13) return _this.CheckValue(true); }; this.pInput.onkeydown = function(e){return _this.OnKeyDown(e);}; }; function BXFMPack(Params) { this.Init(Params); } BXFMPack.prototype = { Init: function(Params) { if (this.bInited) return true; this.oPackDialog = Params.oPackDialog; BX.addClass(this.oPackDialog.PARTS.CONTENT, "bx-fm-pack-dialog"); BX.cleanNode(this.oPackDialog.PARTS.CONTENT_DATA); this.oPackDialog.PARTS.CONTENT_DATA.appendChild(BX('bx_pack_dialog')); this.arLastPathes = Params.arLastPathes; this.pPackCancel = BX("cancel-pack"); this.pPackCancel.onclick = function() { if (_this.bPacking) { _this.oPackDialog.SetTitle(FM_MESS.PackFinishing); _this.bStopPacking = true; //if 'replace' dialog was shown, simply close the form if (_this.Params && _this.Params.fileOld) { _this.Params.fileOld = null; _this.bPacking = false; _this.oPackDialog.Close(); } } else { _this.oPackDialog.Close(); } }; var _this = this; this.pCopyTbl = BX('bx_pack_table'); this.pFilelist = BX('bx_pack_file_list'); this.pPackTo = BX('bx_pack_to'); // Case options this.pCaseReplace = BX("bx_pack_replace"); this.pCaseSkip = BX("bx_pack_skip"); this.pCaseReplace.onclick = this.pCaseSkip.onclick = function() { if (this.checked) _this.caseOption = this.value; }; this.lang = Params.lang; this.site = Params.site; this.sessid_get = Params.sessid_get; BX('bx_pack_dialog').style.display = "block"; this.viewMsFilePath = Params.viewMsFilePath; this.viewMsFolderPath = Params.viewMsFolderPath; //archive type selector this.oArcTypeSel = new BXFMArcTypeSel({ id: 'arc_type_pack', pDiv: BX('bx_pack_arc_type'), types: Params.arTypes, bPack: true, typeChangeCallback: function(newtype) {_this.ChangeType(newtype)} }); this.oPackTo = new BXFMInpSel({ id: 'cm_pack_to', pInput : this.pPackTo, Items: this.arLastPathes }); this.oSiteSel = new BXFMSiteSel({ id: 'site_sel_pack', pDiv: BX('bx_pack_site_sel'), sites: Params.arSites }); this.caseOption = 'skip'; BX.removeClass(_this.pCopyTbl, 'bx-pack-cont-tbl-add-hide'); switch(this.caseOption) { case "replace": this.pCaseReplace.checked = true; break; case "skip": this.pCaseSkip.checked = true; break; } BX.addCustomEvent(this.oPackDialog, 'onWindowUnRegister', BX.proxy(this.OnClose, this)); this.pCaseSkip = BX("bx_pack_skip"); this.pCaseReplace.onclick = this.pCaseSkip.onclick = function() { if (this.checked) _this.caseOption = this.value; }; BX.addCustomEvent(this.oPackDialog, 'onBeforeWindowClose', function(){ _this.oPackDialog.denyClose = false; if (_this.bPacking) { if (!_this.forceClose) { _this.oPackDialog.SetTitle(FM_MESS.PackFinishing); _this.bStopPacking = true; //if we tried to rename file... if (_this.Params && _this.Params.fileOld) _this.Params.fileOld = null; else _this.oPackDialog.denyClose = true; } } }); this.bInited = true; }, OnOpen: function(Params) { this.bPack = Params.bPack; this.arFiles = []; this.curPath = Params.path; this.bStopPacking = false; this.bPacking = false; this.forceClose = false; this.bSearch = !!Params.bSearch; this.searchSess = Params.ssess; if (typeof Params.arFiles == 'object') this.arFiles = Params.arFiles; if (Params.arFiles[0] && Params.arFiles[0] == 'action_target') this.arFiles = [{'path' : Params.path, 'isDir' : '1'}]; //cancel button var cancelBut = this.oPackDialog.PARAMS.buttons[1]; cancelBut.btn.value = FM_MESS.PackCancel; clearInterval(this.counterID); //generate name where to pack or unpack (/test/test.tar.gz or /test/) this.pPackTo.value = this.GeneratePath(this.bPack, this.arFiles, "." + this.oArcTypeSel.value.toLowerCase()); var oBut = this.oPackDialog.PARAMS.buttons[0]; if (this.bPack) { this.oPackDialog.SetTitle(FM_MESS.PackTitle); oBut.btn.value = oBut.title = FM_MESS.Pack; //when showing the pack dialog - make archive type selector clickable again if (this.oArcTypeSel.arcTypes.length == 1) { BX.addClass(this.oArcTypeSel.pDiv,"bx-fm-non-selectable"); BX.unbindAll(this.oArcTypeSel.pDiv); } else { BX.removeClass(this.oArcTypeSel.pDiv,"bx-fm-non-selectable"); BX.bind(this.oArcTypeSel.pDiv, "click", BX.proxy(this.oArcTypeSel.ShowPopup, this.oArcTypeSel)); } BX('bxfm-arctype-line').style.display = "table-row"; //rewriting options: set default value and hide unnecessary choices BX('bxfm-pack-option-replace').style.display = "none"; BX('bxfm-pack-option-skip').style.display = "none"; BX('bx-pack-d-title-label').style.display = "none"; this.pCaseSkip.checked = true; this.caseOption = "ask"; } else { this.oPackDialog.SetTitle(FM_MESS.UnpackTitle); oBut.btn.value = oBut.title = FM_MESS.Unpack; BX('bxfm-arctype-line').style.display = "none"; //remove unnecessary rewriting options BX('bx-pack-d-title-label').style.display = "table-row"; BX('bxfm-pack-option-skip').style.display = "table-row"; BX('bxfm-pack-option-replace').style.display = "table-row"; this.pCaseSkip.checked = true; this.caseOption = "skip"; } //set 'Archive' button active BX('ok-pack').disabled = false; // Clean filelist BX.cleanNode(this.pFilelist); var i, l = this.arFiles.length; for (i = 0; i < l; i++) { this.pFilelist.appendChild(BX.create("A", {props: {href: this.GetViewUrl(this.arFiles[i], this.site), target: '_blank'}, text: this.GetFileName(this.arFiles[i])})); if (i == 1 && l > 3) { this.pFilelist.appendChild(document.createTextNode(" (" + FM_MESS.More.replace("#COUNT#", parseInt(l - i - 1)) + ")")); break; } else if (i < l - 1) { this.pFilelist.appendChild(document.createTextNode(", ")); } } this.oPackDialog.adjustSizeEx(); BX.bind(BX.browser.IsIE() ? document.body : window, "keydown", BX.proxy(this.OnKeyDown, this)); }, OnClose: function() { clearInterval(this.counterID); BX.unbind(BX.browser.IsIE() ? document.body : window, "keydown", BX.proxy(this.OnKeyDown, this)); }, OnKeyDown: function(e) { if (!e) e = window.event; if (window.oBXFileDialog && window.oBXFileDialog.bOpened) return; if (this.oPackDialog.isOpen && e.keyCode == 13 && (!this.oAskUserDialog || !this.oAskUserDialog.isOpen)) return this.Process(); }, Process: function(Params) { var bPackReplace = null; if (Params) { switch(Params.userCase) { case "rename": var tmpName = this.GetFolderPath(this.pPackTo.value); this.pPackTo.value = tmpName + Params.newName; break; case "replace": bPackReplace = "replace"; break; } } var _this = this, action = this.bPack ? 'pack' : 'unpack', postParams = { case_option: this.caseOption, files: this.arFiles, packTo: this.pPackTo.value, siteTo: this.oSiteSel.value, startFile: '', quickPath: BX('quick_path').value, arcType: this.oArcTypeSel.value, bPackReplace: bPackReplace }; //stop progress bar if (this.counterID) clearInterval(this.counterID); //disable archive button BX('ok-pack').disabled = true; //progress bar blinking ... notification this.counterID = setInterval(function() { if ((_this.oPackDialog.PARAMS.title.split('.').length - 1) < 3) { this.oPackDialog.SetTitle(_this.oPackDialog.PARAMS.title + ' .'); } else { this.oPackDialog.SetTitle(_this.oPackDialog.PARAMS.title.split(' .')[0]); } }, 500); var onResult = function() { if (!_this.oPackDialog.isOpen) return; if (_this.bStopPacking) { if (_this.bPack && !window.BXFM_archiveExists) { var fileID = _this.GetFileName(postParams.packTo), filePath = _this.GetFolderPath(postParams.packTo), deleteFileUrl = "/bitrix/admin/fileman_admin.php?action=delete&ID=" + fileID + "&path=" + filePath + "&" + _this.sessid_get + "&lang=" + _this.lang + "&site=" + _this.site; _this.bStopPacking = false; tbl_fileman_admin.GetAdminList(deleteFileUrl, function(){ _this.forceClose = true; _this.oPackDialog.Close(); } ); return; } else { _this.forceClose = true; _this.oPackDialog.Close(); return; } } if (window.BXFM_archivePermsError) { alert(FM_MESS.PackPermsError); BX('ok-pack').disabled = false; window.BXFM_archivePermsError = null; _this.oPackDialog.Close(); } else if (window.BXFM_archiveExists) { _this.ShowAskUserDialog(window.BXFM_archiveExists); window.BXFM_archiveExists = null; //set Archive button as active again BX('ok-pack').disabled = false; } else if (window.BXFM_archiveFNameError) { alert(FM_MESS.PackFNameError); BX('ok-pack').disabled = false; window.BXFM_archiveFNameError = null; _this.forceClose = true; _this.oPackDialog.Close(); } else { switch(action) { case "pack": if (window.fmPackTimeout) { postParams.startFile = window.fmPackLastFile; } else { //successfull packing if (window.fmPackSuccess) { _this.forceClose = true; _this.oPackDialog.Close(); var redirectPath = _this.GetFolderPath(postParams.packTo); redirectPath = (redirectPath.length == (redirectPath.lastIndexOf('/') + 1) && redirectPath.length !== 1) ? redirectPath.substr(0, redirectPath.length - 1) : redirectPath; window.location = (_this.viewMsFolderPath + _this.oSiteSel.value).replace('#PATH#', BX.util.urlencode(redirectPath)); return; } else { if (window.fmPackErrors) alert(FM_MESS.PackError + ": " + window.fmPackErrors); else alert(FM_MESS.PackError); BX.closeWait(); _this.forceClose = true; _this.oPackDialog.Close(); return; } } /* possible: update progress bar _this.pDiv.innerHTML = window.fmPackLastFile; Current path: /bigfile/bigfile.flv */ break; case "unpack": //successful unpacking if (window.fmUnpackSuccess) { _this.forceClose = true; _this.oPackDialog.Close(); var redirectPath = _this.GetFolderPath(postParams.packTo); redirectPath = (redirectPath.length == (redirectPath.lastIndexOf('/') + 1) && redirectPath.length !== 1) ? redirectPath.substr(0, redirectPath.length - 1) : redirectPath; window.location = (_this.viewMsFolderPath + postParams.siteTo).replace('#PATH#', BX.util.urlencode(redirectPath)); return; } else { if (window.fmUnpackErrors) alert(FM_MESS.UnpackError + ": " + window.fmUnpackErrors); else alert(FM_MESS.UnpackError); BX.closeWait(); _this.forceClose = true; _this.oPackDialog.Close(); return; } break; } if (action == "pack") { if (_this.rq) _this.rq.abort(); _this.rq = _this.Request(action, postParams, onResult); } } }; this.bPacking = true; this.rq = this.Request(action, postParams, onResult); }, GetFolderPath: function(fullpath) { var tmpPath = fullpath; var i = tmpPath.lastIndexOf('/'); if (i != '-1') { tmpPath = tmpPath.slice(0,i); } if (tmpPath != "/") tmpPath += "/"; return tmpPath; }, GetFileName: function(filePath) { if (typeof filePath == 'object') filePath = filePath.path; var name = filePath, i = filePath.lastIndexOf("/"); if (i !== -1 && filePath.length !== 1) name = filePath.substr(i + 1); return name; }, MakeArchiveName: function (str) { /* INPUT: /test1/test2 /test1/myfile.doc /test/file.tar.gz /.access.php /.top.menu_ext.php /.htaccess OUTPUT: test2 myfile file .access .top_menu_ext .htaccess */ //get only the last part of the name var tmp = str.substr(str.lastIndexOf('/') + 1); //check for .tar.gz if (tmp.slice(-7) == ".tar.gz") { tmp = tmp.slice(0,-7); } //else remove extension if exists else { if (tmp.lastIndexOf('.') != -1 && tmp.lastIndexOf('.') != 0) tmp = tmp.slice(0,tmp.lastIndexOf('.')) } return tmp; }, MakeFolderArchiveName: function (str) { //get only the last part of the name var tmp = str.substr(str.lastIndexOf('/') + 1); return tmp; }, GeneratePath: function(bpack, files, ext) { if (bpack && files.length == 1 && !!files[0].isDir == true) { return this.GetFolderPath(files[0].path) + this.MakeFolderArchiveName(files[0].path) + ext; } //returns /path/name.ext if (bpack && files.length > 0) { var tmpname = files.length == 1 ? files[0].path : "archive"; return this.GetFolderPath(this.arFiles[0].path) + this.MakeArchiveName(tmpname) + ext; } if (!bpack) { /* INPUT: /test2/test1/test.tar.gz /test2/test1/test.zip OUTPUT: /test2/test1/ */ var pth = files[0]; return this.GetFolderPath(pth); } }, ChangeType: function(newext) { newext = newext.toLowerCase(); if (this.arFiles) this.pPackTo.value = this.GeneratePath(this.bPack, this.arFiles, "." + newext); }, GetViewUrl: function(file, site) { if (typeof file == 'object') return ((file.isDir ? this.viewMsFolderPath : this.viewMsFilePath) + site).replace('#PATH#', BX.util.urlencode(file.path)); return (this.viewMsFilePath + site).replace('#PATH#', BX.util.urlencode(file)); }, //packing Request : function(action, postParams, callBack, bShowWaitWin) { bShowWaitWin = bShowWaitWin !== false; if (bShowWaitWin) BX.showWait(); var actionUrl = '/bitrix/admin/fileman_admin.php?lang=' + this.lang + "&fu_action=" + action + "&site=" + this.site + "&" + this.sessid_get; //lock archive type selector if already packing if (action == "pack") { BX.addClass(this.oArcTypeSel.pDiv,"bx-fm-non-selectable"); BX.unbindAll(this.oArcTypeSel.pDiv); } return BX.ajax.post(actionUrl, postParams || {}, function(result) { if (bShowWaitWin) BX.closeWait(); if(callBack) setTimeout(function(){callBack(result);}, 100); } ); }, //packing ShowAskUserDialog: function(Params) { var _this = this; _this.Params = Params; if (!this.oAskUserDialog) { this.oAskUserDialog = new BX.CAdminDialog({ title : "", content: " ", height: 240, width: 500, resizable: false }); this.oAskUserDialog.SetButtons([ new BX.CWindowButton( { title: FM_MESS.Replace, name: 'replace', action: function(){_this.UserAnswer('replace');} }), new BX.CWindowButton( { title: FM_MESS.Rename, name: 'rename', action: function() { var newName = prompt(FM_MESS.AskNewName, _this.Params.fileOld.name); _this.Params.fileOld.name = null; if (newName) _this.UserAnswer('rename', newName); } }), this.oAskUserDialog.btnCancel ]); BX.addClass(this.oAskUserDialog.PARTS.CONTENT, "bx-fm-pack-dialog"); BX.addClass(this.oAskUserDialog.PARTS.FOOT, "bx-core-dialog-foot-ask"); //BX.cleanNode(this.oAskUserDialog.PARTS.CONTENT); setTimeout(function() { var pAskPialog = BX('bx_pack_ask_dialog'); _this.oAskUserDialog.SetContent(pAskPialog); pAskPialog.style.display = "block"; // _this.pAskToAllCont = pAskPialog.appendChild(BX.create("DIV", {props: {className: "bx-pack-to-all" }, html: "<table><tr><td><input type='checkbox' id='bx_copy_ask_to_all'></td><td><label for='bx_copy_ask_to_all'>" + FM_MESS.ToAll + "</label></td></tr></table>"})); _this.oAskUserDialog.adjustSizeEx(); }, 50); this.pAskFileName = BX("bx_pack_ask_file_name"); this.pAskFolderName = BX("bx_pack_ask_folder"); this.pAskSizeRow = BX("bx_pack_ask_size_row"); this.pAskFileOld = {pName: BX("bx_pack_ask_file2"), pSize: BX("bx_pack_ask_size2"), pDate: BX("bx_pack_ask_date2")}; this.pRenBut = this.oAskUserDialog.PARAMS.buttons[2].btn; BX.addCustomEvent(this.oAskUserDialog, 'onWindowUnRegister', function() { _this.oPackTo.bDenyOpenPopup = false; }); } this.oAskUserDialog.Show(); if (_this.counterID) clearInterval(_this.counterID); this.oPackTo.bDenyOpenPopup = true; this.oAskUserDialog.adjustSizeEx(); //this.oAskUserDialog.PARTS.CONTENT.style.height = BX.browser.IsIE() ? "160px" : "170px"; this.oAskUserDialog.SetTitle(FM_MESS.FileExistTitle); this.pAskFileName.innerHTML = Params.fileOld.name; this.pAskFolderName.innerHTML = _this.GetFolderPath(this.pPackTo.value); this.pAskFileOld.pName.innerHTML = this.pAskFileOld.pName.title = Params.fileOld.name; this.pAskFileOld.pName.href = this.GetViewUrl(Params.fileOld.path, Params.fileOld.site); this.pAskFileOld.pDate.innerHTML = Params.fileOld.date; this.pAskFileOld.pSize.innerHTML = Params.fileOld.size; }, UserAnswer: function(userCase, newName) { if (userCase == "replace") this.Params = null; this.Process({ userCase: userCase, newName: newName }); this.oAskUserDialog.Close(); } }; BXFMInpSel.prototype = { ShowPopup: function(bSelectInput) { if (this.bPopupShowed || this.bDenyOpenPopup) return; var _this = this; if (bSelectInput !== false) this.pInput.select(); if (!this.bPopupCreated) this.CreatePopup(); this.Popup.style.display = 'block'; this.bPopupShowed = true; setTimeout(function(){BX.bind(document, "click", BX.proxy(_this.ClosePopup, _this));}, 100); //GetRealPos var pos = jsUtils.GetRealPos(this.pInput); jsFloatDiv.Show(this.Popup, pos.left + this.posCorrection.left, pos.top + this.posCorrection.top, 3); BX.WindowManager.disableKeyCheck(); }, ClosePopup: function(bCheck) { BX.unbind(document, "click", BX.proxy(this.ClosePopup, this)); setTimeout(function(){BX.WindowManager.enableKeyCheck();}, 200); if (!this.Popup || !this.pInput) return; this.Popup.style.display = 'none'; this.bPopupShowed = false; jsFloatDiv.Close(this.Popup); if (bCheck !== false && this.pInput.value == '') this.OnChange(); if (this.pInput.focus) this.pInput.focus(); }, CreatePopup: function() { var _this = this, pRow, i, l = this.Items.length; this.Popup = document.body.appendChild(BX.create("DIV", {props:{className: "bxfm-is-popup"}})); if (!this.popupWidth) this.Popup.style.width = parseInt(this.pInput.offsetWidth) + "px"; this.bPopupCreated = true; for (i = 0; i < l; i++) { pRow = this.Popup.appendChild(BX.create("DIV", { props: {id: 'bx_' + this.id + '_' + i, title: this.Items[i].name || this.Items[i].title, className: 'bxfm-is-item'}, text: this.Items[i].name, events: { mouseover: function(){BX.addClass(this, 'bxfm-is-item-over');}, mouseout: function(){BX.removeClass(this, 'bxfm-is-item-over');}, click: function() { var ind = this.id.substr(('bx_' + _this.id + '_').length); _this.curInd = ind; _this.pInput.value = _this.Items[ind].name; _this.OnChange(); _this.ClosePopup(); } } })); this.Items[i].pCont = pRow; } }, OnChange: function(bOnChange) { var val = this.pInput.value; if (val == '' || val == this.NoValueMess) { BX.addClass(this.pInput, "bxfm-is-label"); this.pInput.value = this.NoValueMess; val = ''; } else { BX.removeClass(this.pInput, "bxfm-is-label"); } if (this.onChange && bOnChange !== false) this.onChange({value: val}); }, CheckValue: function(bHighlight, bClose) { if (!this.bCheckValue) return; var bConcur = false, val, i, l = this.Items.length, curValue = this.pInput.value; for (i = 0; i < l; i++) { val = this.Items[i].name; if ((val.length > curValue.length && val.substr(0, curValue.length) == curValue) || val == curValue) { this.SelectItem(i, bHighlight); bConcur = true; break; } } if (!bConcur && bClose !== false) { if (this.selItemInd !== false) this.DeSelectItem(this.selItemInd); this.ClosePopup(false); } }, SelectItem: function(ind, bHighlight) { if (!this.bPopupShowed) this.ShowPopup(false); if (this.selItemInd !== false) this.DeSelectItem(this.selItemInd); var pCont = this.Items[ind].pCont; if (bHighlight) { var l = this.pInput.value.length; BX.cleanNode(pCont); pCont.appendChild(BX.create("SPAN", {props: {className: "bxfm-highlighted"}, text: this.Items[ind].name.substr(0, l)})); pCont.appendChild(document.createTextNode(this.Items[ind].name.substr(l))); } this.selItemInd = ind; BX.addClass(pCont, "bxfm-is-item-concur"); }, DeSelectItem: function(ind) { BX.cleanNode(this.Items[ind].pCont); this.Items[ind].pCont.appendChild(document.createTextNode(this.Items[ind].name)); BX.removeClass(this.Items[ind].pCont, "bxfm-is-item-concur"); this.selItemInd = false; }, OnKeyDown: function(e) { if (this.bDenyOpenPopup) return true; if (window.oBXFileDialog && window.oBXFileDialog.bOpened) return; this.bCheckValue = true; if (!e) e = window.event; // select item - paste value to input and close popup if (e.keyCode == 13) { if (!this.bPopupShowed) { if (this.onEnterPress) { this.onEnterPress({value: this.pInput.value}); return BX.PreventDefault(e); } this.bCheckValue = false; return; } if (this.selItemInd) { this.bCheckValue = false; this.OnChange(); this.ClosePopup(); return BX.PreventDefault(e); } } else if (e.keyCode == 27) // Esc { if (!this.bPopupShowed) return; this.ClosePopup(); this.bCheckValue = false; return BX.PreventDefault(e); } else if (e.keyCode == 40 || e.keyCode == 38) // Down or Up { var ind; if (e.keyCode == 40) { if (!this.bPopupShowed) { this.CheckValue(false, false); this.bCheckValue = false; this.ShowPopup(false); return; } ind = this.selItemInd === false ? 0 : this.selItemInd + 1; if (ind > this.Items.length - 1) ind = 0; } else { if (!this.bPopupShowed) return; ind = this.selItemInd === false ? this.Items.length - 1 : this.selItemInd - 1; if (ind < 0) ind = this.Items.length - 1; } this.pInput.value = this.Items[ind].name; this.SelectItem(ind, false); this.bCheckValue = false; return BX.PreventDefault(e); } else if (e.keyCode == 39) // Right { if (this.selItemInd !== false && this.bPopupShowed) { this.pInput.value = this.Items[this.selItemInd].name; this.SelectItem(this.selItemInd, false); this.bCheckValue = false; this.ClosePopup(); } } } } var BXFMSiteSel = function(Params) { this.pDiv = Params.pDiv; this.sites = Params.sites; var i, l = this.sites.length; if (l == 1) { this.bOne = true; this.pDiv.style.display = "none"; return this.SetSite(0, false); } this.pTitle = this.pDiv.appendChild(BX.create("DIV")); this.pDiv.onclick = BX.proxy(this.ShowPopup, this); this.id = Params.id || "site_sel"; for (i = 0; i < l; i++) { if (this.sites[i].current) { this.SetSite(i, false); break; } } }; BXFMSiteSel.prototype = { ShowPopup: function() { if (this.bShowed) return this.ClosePopup(); this.bShowed = true; var _this = this; if (!this.bCreated) this.CreatePopup(); var pos = BX.pos(this.pDiv); this.Popup.style.display = 'block'; this.Popup.style.top = (pos.top + 18) + "px"; this.Popup.style.left = pos.left + "px"; BX.ZIndexManager.bringToFront(this.Popup); BX.WindowManager.disableKeyCheck(); setTimeout(function(){BX.bind(document, "click", BX.proxy(_this.ClosePopup, _this));}, 100); BX.bind(document, 'keydown', BX.proxy(this.OnKeyDown, this)); }, ClosePopup: function() { BX.unbind(document, "click", BX.proxy(this.ClosePopup, this)); BX.unbind(document, 'keydown', BX.proxy(this.OnKeyDown, this)); setTimeout(function(){BX.WindowManager.enableKeyCheck();}, 200); if (!this.Popup) return; this.Popup.style.display = 'none'; this.bShowed = false; }, CreatePopup: function() { var _this = this, site, pRow, i, l = this.sites.length; this.Popup = document.body.appendChild(BX.create("DIV", {props:{className: "bxfm-at-is-popup"}})); BX.ZIndexManager.register(this.Popup); this.Popup.style.width = "200px"; this.bCreated = true; for (i = 0; i < l; i++) { site = this.sites[i]; pRow = this.Popup.appendChild(BX.create("SPAN", { props: {id: 'bx_' + this.id + '_' + i, title: BX.util.htmlspecialchars(site.text), className: 'bxfm-site-sel-it'}, events: { mouseover: function(){BX.addClass(this, 'bxfm-ss-over');}, mouseout: function(){BX.removeClass(this, 'bxfm-ss-over');}, click: function() { var ind = this.id.substr(('bx_' + _this.id + '_').length); _this.SetSite(parseInt(ind), true); _this.ClosePopup(); } } })); pRow.appendChild(BX.create("DIV", {props: {className: 'bxfm-text-overflow'}, text: site.text})); if (this.curSiteInd === i) BX.addClass(pRow, "bxfm-ss-checked"); this.sites[i].row = pRow; } }, SetSite: function(ind) { var site = this.sites[ind]; if (!site) return; if (!this.bOne && typeof this.curSiteInd != 'undefined' && this.sites[this.curSiteInd] && this.sites[this.curSiteInd].row) BX.removeClass(this.sites[this.curSiteInd].row, "bxfm-ss-checked"); this.value = site.id; this.curSiteInd = ind; BX('bx_copy_to').value = site['dir']; BX('bx_copy_to').focus(); if (this.bOne) return; this.pTitle.innerHTML = site.id.toUpperCase(); if (this.sites[ind].row) BX.addClass(this.sites[ind].row, "bxfm-ss-checked"); }, OnKeyDown: function(e) { if (!e) e = window.event; if (window.oBXFileDialog && window.oBXFileDialog.bOpened) return; if (e.keyCode == 27) return this.ClosePopup(); } }; /* archive type selector */ var BXFMArcTypeSel = function(Params) { this.pDiv = Params.pDiv; this.arcTypes = Params.types; this.bPack = Params.bPack; this.typeChangeCallback = Params.typeChangeCallback; var l = this.arcTypes.length; //if only one archive type is available, show it without selector if (l == 1) { this.bOne = true; BX.addClass(this.pDiv,"bx-fm-non-selectable"); this.pDiv.innerHTML = this.arcTypes[0].text.toUpperCase(); return this.SetArcType(0, false); } this.pTitle = this.pDiv.appendChild(BX.create("DIV")); BX.bind(this.pDiv, "click", BX.proxy(this.ShowPopup, this)); this.id = Params.id || "arc_type_pack"; //default this.SetArcType(0, false); }; BXFMArcTypeSel.prototype = { ShowPopup: function() { if (this.bShowed) return this.ClosePopup(); this.bShowed = true; var _this = this; if (!this.bCreated) this.CreatePopup(); var pos = BX.pos(this.pDiv); this.Popup.style.display = 'block'; this.Popup.style.top = (pos.top + 18) + "px"; this.Popup.style.left = pos.left + "px"; BX.ZIndexManager.bringToFront(this.Popup); BX.WindowManager.disableKeyCheck(); setTimeout(function(){BX.bind(document, "click", BX.proxy(_this.ClosePopup, _this));}, 100); BX.bind(document, 'keydown', BX.proxy(this.OnKeyDown, this)); }, ClosePopup: function() { BX.unbind(document, "click", BX.proxy(this.ClosePopup, this)); BX.unbind(document, 'keydown', BX.proxy(this.OnKeyDown, this)); setTimeout(function(){BX.WindowManager.enableKeyCheck();}, 200); if (!this.Popup) return; this.Popup.style.display = 'none'; this.bShowed = false; }, CreatePopup: function() { var _this = this, arctype, pRow, i, l = this.arcTypes.length; this.Popup = document.body.appendChild(BX.create("DIV", {props:{className: "bxfm-at-is-popup"}})); this.Popup.style.width = "260px"; this.bCreated = true; BX.ZIndexManager.register(this.Popup); for (i = 0; i < l; i++) { arctype = this.arcTypes[i]; pRow = this.Popup.appendChild(BX.create("DIV", { props: {id: 'bx_' + this.id + '_' + i, title: BX.util.htmlspecialchars(arctype.text), className: 'bxfm-arc-type-it'}, events: { mouseover: function(){BX.addClass(this, 'bxfm-at-over');}, mouseout: function(){BX.removeClass(this, 'bxfm-at-over');}, click: function() { var ind = this.id.substr(('bx_' + _this.id + '_').length); _this.SetArcType(parseInt(ind), true); _this.ClosePopup(); } } })); pRow.appendChild(BX.create("DIV", {props: {className: 'bxfm-text-overflow'}, text: arctype.text})); if (this.curArcTypeInd === i) BX.addClass(pRow, "bxfm-at-checked"); this.arcTypes[i].row = pRow; } }, SetArcType: function(ind) { var arctype = this.arcTypes[ind]; if (!arctype) return; if (!this.bOne && typeof this.curArcTypeInd != 'undefined' && this.arcTypes[this.curArcTypeInd] && this.arcTypes[this.curArcTypeInd].row) BX.removeClass(this.arcTypes[this.curArcTypeInd].row, "bxfm-at-checked"); this.value = arctype.id; this.curArcTypeInd = ind; if (this.bOne) return; this.pTitle.innerHTML = arctype.text.toUpperCase(); if (this.bPack) this.typeChangeCallback(this.pTitle.innerHTML); if (this.arcTypes[ind].row) BX.addClass(this.arcTypes[ind].row, "bxfm-at-checked"); }, OnKeyDown: function(e) { if (!e) e = window.event; if (window.oBXFileDialog && window.oBXFileDialog.bOpened) return; if (e.keyCode == 27) return this.ClosePopup(); } };