protected void Page_Load(object sender, EventArgs e) { strCmd = Request.QueryString["cmd"] + ""; strType = Request.QueryString["type"] + ""; strFolder = Request.QueryString["folder"] + ""; strFile = Request.QueryString["file"] + ""; strLang = Request.QueryString["lang"] + ""; //not used right now, but grab it strEditor = Request.QueryString["editor"] + ""; strCurrPath = Request.QueryString["currpath"] + ""; strProfile = Request.QueryString["profile"] + ""; // load config this.objConfig = new clsConfig(strProfile); //check inputs if (this.strCurrPath.Length > 0) { this.strCurrPath = this.strCurrPath.TrimEnd('\\') + "\\"; } //set the apply string, based on the passed type if (this.strType == "") { this.strType = "0"; } switch (this.strType) { case "1": this.strApply = "apply_img"; this.boolOnlyImage = true; this.strAllowedFileExt = this.objConfig.strAllowedImageExtensions; break; case "2": this.strApply = "apply_link"; this.strAllowedFileExt = this.objConfig.strAllowedAllExtensions; break; default: if (Convert.ToInt32(this.strType) >= 3) { this.strApply = "apply_video"; this.boolOnlyVideo = true; this.strAllowedFileExt = this.objConfig.strAllowedVideoExtensions; } else { this.strApply = "apply"; this.strAllowedFileExt = this.objConfig.strAllowedAllExtensions; } break; } //setup current link strCurrLink = "dialog.aspx?type=" + this.strType + "&editor=" + this.strEditor + "&lang=" + this.strLang + "&profile=" + this.strProfile; switch (strCmd) { case "debugsettings": Response.Write("<style>"); Response.Write("body {font-family: Verdana; font-size: 10pt;}"); Response.Write(".table {display: table; border-collapse: collapse; margin: 20px; background-color: #e7e5e5;}"); Response.Write(".tcaption {display: table-caption; padding: 5px; font-size: 14pt; font-weight: bold; background-color: #9fcff7;}"); Response.Write(".tr {display: table-row;}"); Response.Write(".tr:hover {background-color: #f0f2f3;}"); Response.Write(".td {display: table-cell; padding: 5px; border: 1px solid #a19e9e;}"); Response.Write("</style>"); Response.Write("<div class=\"table\">"); //start table Response.Write("<div class=\"tcaption\">Operating Settings</div>"); //caption Response.Write("<div class=\"tbody\">"); //start body Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowCreateFolder:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.boolAllowCreateFolder + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowDeleteFile:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.boolAllowDeleteFile + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowDeleteFolder:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.boolAllowDeleteFolder + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowUploadFile:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.boolAllowUploadFile + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>MaxUploadSizeMb:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.intMaxUploadSizeMb + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedAllExtensions:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strAllowedAllExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedFileExtensions:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strAllowedFileExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedImageExtensions:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strAllowedImageExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedMiscExtensions:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strAllowedMiscExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedMusicExtensions:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strAllowedMusicExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedVideoExtensions:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strAllowedVideoExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>BaseURL:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strBaseURL + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>DocRoot:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strDocRoot + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>ThumbPath:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strThumbPath + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>ThumbURL:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strThumbURL + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>UploadPath:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strUploadPath + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>UploadURL:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strUploadURL + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>FillSelector:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strFillSelector + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>PopupCloseCode:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strPopupCloseCode + "</div>"); Response.Write("</div>"); //end row Response.Write("</div>"); //end body Response.Write("</div>"); //end table Response.End(); break; case "createfolder": try { strFolder = Request.Form["folder"] + ""; //forge ahead without checking for existence //catch will save us Directory.CreateDirectory(this.objConfig.strUploadPath + "\\" + strFolder); Directory.CreateDirectory(this.objConfig.strThumbPath + "\\" + strFolder); // end response, since it's an ajax call Response.End(); } catch { //TODO: write error } break; case "upload": strFolder = Request.Form["folder"] + ""; HttpPostedFile filUpload = Request.Files["file"]; string strTargetFile; string strThumbFile; //check file was submitted if ((filUpload != null) && (filUpload.ContentLength > 0)) { strTargetFile = this.objConfig.strUploadPath + this.strFolder + filUpload.FileName.ToLower(); strThumbFile = this.objConfig.strThumbPath + this.strFolder + filUpload.FileName.ToLower(); filUpload.SaveAs(strTargetFile); if (this.isImageFile(strTargetFile)) { this.createThumbnail(strTargetFile, strThumbFile); } } // end response if (Request.Form["fback"] == "true") { Response.Redirect(this.strCurrLink); } else { Response.End(); } break; case "download": FileInfo objFile = new FileInfo(this.objConfig.strUploadPath + "\\" + this.strFile); Response.ClearHeaders(); Response.AddHeader("Pragma", "private"); Response.AddHeader("Cache-control", "private, must-revalidate"); Response.AddHeader("Content-Type", "application/octet-stream"); Response.AddHeader("Content-Length", objFile.Length.ToString()); Response.AddHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(this.strFile)); Response.WriteFile(this.objConfig.strUploadPath + "\\" + this.strFile); break; case "delfile": try { File.Delete(this.objConfig.strUploadPath + "\\" + this.strFile); if (File.Exists(this.objConfig.strThumbPath + "\\" + this.strFile)) { File.Delete(this.objConfig.strThumbPath + "\\" + this.strFile); } } catch { //TODO: set error } goto default; case "delfolder": try { Directory.Delete(this.objConfig.strUploadPath + "\\" + strFolder, true); Directory.Delete(this.objConfig.strThumbPath + "\\" + strFolder, true); } catch { //TODO: set error } goto default; default: //just a regular page load if (this.strCurrPath != "") { // add "up one" folder this.objFItem = new TinyFileManager.NET.clsFileItem(); this.objFItem.strName = ".."; this.objFItem.boolIsFolder = true; this.objFItem.boolIsFolderUp = true; this.objFItem.intColNum = this.getNextColNum(); this.objFItem.strPath = this.getUpOneDir(this.strCurrPath); this.objFItem.strClassType = "dir"; this.objFItem.strDeleteLink = "<a class=\"btn erase-button top-right disabled\" title=\"Erase\"><i class=\"icon-trash\"></i></a>"; this.objFItem.strThumbImage = "img/ico/folder_return.png"; this.objFItem.strLink = "<a title=\"Open\" href=\"" + this.strCurrLink + "&currpath=" + this.objFItem.strPath + "\"><img class=\"directory-img\" src=\"" + this.objFItem.strThumbImage + "\" alt=\"folder\" /><h3>..</h3></a>"; this.arrLinks.Add(objFItem); } //load folders arrFolders = Directory.GetDirectories(this.objConfig.strUploadPath + this.strCurrPath); foreach (string strF in arrFolders) { this.objFItem = new TinyFileManager.NET.clsFileItem(); this.objFItem.strName = Path.GetFileName(strF); this.objFItem.boolIsFolder = true; this.objFItem.intColNum = this.getNextColNum(); this.objFItem.strPath = this.strCurrPath + Path.GetFileName(strF); this.objFItem.strClassType = "dir"; if (this.objConfig.boolAllowDeleteFolder) { this.objFItem.strDeleteLink = "<a href=\"" + this.strCurrLink + "&cmd=delfolder&folder=" + this.objFItem.strPath + "&currpath=" + this.strCurrPath + "\" class=\"btn erase-button top-right\" onclick=\"return confirm('Are you sure to delete the folder and all the objects in it?');\" title=\"Erase\"><i class=\"icon-trash\"></i></a>"; } else { this.objFItem.strDeleteLink = "<a class=\"btn erase-button top-right disabled\" title=\"Erase\"><i class=\"icon-trash\"></i></a>"; } this.objFItem.strThumbImage = "img/ico/folder.png"; this.objFItem.strLink = "<a title=\"Open\" href=\"" + this.strCurrLink + "&currpath=" + this.objFItem.strPath + "\"><img class=\"directory-img\" src=\"" + this.objFItem.strThumbImage + "\" alt=\"folder\" /><h3>" + this.objFItem.strName + "</h3></a>"; this.arrLinks.Add(objFItem); } // load files arrFiles = Directory.GetFiles(this.objConfig.strUploadPath + this.strCurrPath); foreach (string strF in arrFiles) { this.objFItem = new TinyFileManager.NET.clsFileItem(); this.objFItem.strName = Path.GetFileNameWithoutExtension(strF); this.objFItem.boolIsFolder = false; this.objFItem.strPath = this.strCurrPath + Path.GetFileName(strF); this.objFItem.boolIsImage = this.isImageFile(Path.GetFileName(strF)); this.objFItem.boolIsVideo = this.isVideoFile(Path.GetFileName(strF)); this.objFItem.boolIsMusic = this.isMusicFile(Path.GetFileName(strF)); this.objFItem.boolIsMisc = this.isMiscFile(Path.GetFileName(strF)); // check to see if it's the type of file we are looking at if ((this.boolOnlyImage && this.objFItem.boolIsImage) || (this.boolOnlyVideo && this.objFItem.boolIsVideo) || (!this.boolOnlyImage && !this.boolOnlyVideo)) { this.objFItem.intColNum = this.getNextColNum(); // get display class type if (this.objFItem.boolIsImage) { this.objFItem.strClassType = "2"; } else { if (this.objFItem.boolIsMisc) { this.objFItem.strClassType = "3"; } else { if (this.objFItem.boolIsMusic) { this.objFItem.strClassType = "5"; } else { if (this.objFItem.boolIsVideo) { this.objFItem.strClassType = "4"; } else { this.objFItem.strClassType = "1"; } } } } // get delete link if (this.objConfig.boolAllowDeleteFile) { this.objFItem.strDeleteLink = "<a href=\"" + this.strCurrLink + "&cmd=delfile&file=" + this.objFItem.strPath + "&currpath=" + this.strCurrPath + "\" class=\"btn erase-button\" onclick=\"return confirm('Are you sure to delete this file?');\" title=\"Erase\"><i class=\"icon-trash\"></i></a>"; } else { this.objFItem.strDeleteLink = "<a class=\"btn erase-button disabled\" title=\"Erase\"><i class=\"icon-trash\"></i></a>"; } // get thumbnail image if (this.objFItem.boolIsImage) { // first check to see if thumb exists if (!File.Exists(this.objConfig.strThumbPath + this.objFItem.strPath)) { // thumb doesn't exist, create it strTargetFile = this.objConfig.strUploadPath + this.objFItem.strPath; strThumbFile = this.objConfig.strThumbPath + this.objFItem.strPath; this.createThumbnail(strTargetFile, strThumbFile); } this.objFItem.strThumbImage = this.objConfig.strThumbURL + "/" + this.objFItem.strPath.Replace('\\', '/'); } else { if (File.Exists(Directory.GetParent(Request.PhysicalPath).FullName + "\\img\\ico\\" + Path.GetExtension(strF).TrimStart('.').ToUpper() + ".png")) { this.objFItem.strThumbImage = "img/ico/" + Path.GetExtension(strF).TrimStart('.').ToUpper() + ".png"; } else { this.objFItem.strThumbImage = "img/ico/Default.png"; } } this.objFItem.strDownFormOpen = "<form action=\"dialog.aspx?cmd=download&file=" + this.objFItem.strPath + "\" method=\"post\" class=\"download-form\">"; if (this.objFItem.boolIsImage) { this.objFItem.strPreviewLink = "<a class=\"btn preview\" title=\"Preview\" data-url=\"" + this.objConfig.strUploadURL + "/" + this.objFItem.strPath.Replace('\\', '/') + "\" data-toggle=\"lightbox\" href=\"#previewLightbox\"><i class=\"icon-eye-open\"></i></a>"; } else { this.objFItem.strPreviewLink = "<a class=\"btn preview disabled\" title=\"Preview\"><i class=\"icon-eye-open\"></i></a>"; } this.objFItem.strLink = "<a href=\"#\" title=\"Select\" onclick=\"" + this.strApply + "('" + this.objConfig.strUploadURL + "/" + this.objFItem.strPath.Replace('\\', '/') + "'," + this.strType + ")\";\"><img data-src=\"holder.js/140x100\" alt=\"140x100\" src=\"" + this.objFItem.strThumbImage + "\" height=\"100\"><h4>" + this.objFItem.strName + "</h4></a>"; this.arrLinks.Add(objFItem); } } // foreach break; } // switch } // page load
protected void Page_Load(object sender, EventArgs e) { strCmd = Request.QueryString["cmd"] + ""; strType = Request.QueryString["type"] + ""; strFolder = Request.QueryString["folder"] + ""; strFile = Request.QueryString["file"] + ""; strLang = Request.QueryString["lang"] + ""; //not used right now, but grab it strEditor = Request.QueryString["editor"] + ""; strCurrPath = Request.QueryString["currpath"] + ""; //check inputs if (this.strCurrPath.Length > 0) { this.strCurrPath = this.strCurrPath.TrimEnd('\\') + "\\"; } //set the apply string, based on the passed type if (this.strType == "") { this.strType = "0"; } switch (this.strType) { case "1": this.strApply = "apply_img"; this.boolOnlyImage = true; break; case "2": this.strApply = "apply_link"; break; default: if (Convert.ToInt32(this.strType) >= 3) { this.strApply = "apply_video"; this.boolOnlyVideo = true; } else { this.strApply = "apply"; } break; } //setup current link strCurrLink = "dialog.aspx?type=" + this.strType + "&editor=" + this.strEditor + "&lang=" + this.strLang; switch (strCmd) { case "debugsettings": Response.Write("<style>"); Response.Write("body {font-family: Verdana; font-size: 10pt;}"); Response.Write(".table {display: table; border-collapse: collapse; margin: 20px; background-color: #e7e5e5;}"); Response.Write(".tcaption {display: table-caption; padding: 5px; font-size: 14pt; font-weight: bold; background-color: #9fcff7;}"); Response.Write(".tr {display: table-row;}"); Response.Write(".tr:hover {background-color: #f0f2f3;}"); Response.Write(".td {display: table-cell; padding: 5px; border: 1px solid #a19e9e;}"); Response.Write("</style>"); Response.Write("<div class=\"table\">"); //start table Response.Write("<div class=\"tcaption\">Operating Settings</div>"); //caption Response.Write("<div class=\"tbody\">"); //start body Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowCreateFolder:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.boolAllowCreateFolder + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowDeleteFile:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.boolAllowDeleteFile + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowDeleteFolder:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.boolAllowDeleteFolder + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowUploadFile:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.boolAllowUploadFile + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>MaxUploadSizeMb:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.intMaxUploadSizeMb + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedAllExtensions:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.strAllowedAllExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedFileExtensions:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.strAllowedFileExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedImageExtensions:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.strAllowedImageExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedMiscExtensions:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.strAllowedMiscExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedMusicExtensions:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.strAllowedMusicExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedVideoExtensions:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.strAllowedVideoExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>BaseURL:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.strBaseURL + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>DocRoot:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.strDocRoot + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>ThumbPath:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.strThumbPath + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>ThumbURL:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.strThumbURL + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>UploadPath:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.strUploadPath + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>UploadURL:</b></div>"); Response.Write("<div class=\"td\">" + clsConfig.strUploadURL + "</div>"); Response.Write("</div>"); //end row Response.Write("</div>"); //end body Response.Write("</div>"); //end table Response.End(); break; case "createfolder": try { strFolder = Request.Form["folder"] + ""; //forge ahead without checking for existence //catch will save us Directory.CreateDirectory(clsConfig.strUploadPath + "\\" + strFolder); Directory.CreateDirectory(clsConfig.strThumbPath + "\\" + strFolder); // end response, since it's an ajax call Response.End(); } catch { //TODO: write error } break; case "upload": strFolder = Request.Form["folder"] + ""; HttpPostedFile filUpload = Request.Files["file"]; string strTargetFile; string strThumbFile; //check file was submitted if ((filUpload != null) && (filUpload.ContentLength > 0)) { strTargetFile = clsConfig.strUploadPath + this.strFolder + filUpload.FileName; strThumbFile = clsConfig.strThumbPath + this.strFolder + filUpload.FileName; filUpload.SaveAs(strTargetFile); if (this.isImageFile(strTargetFile)) { this.createThumbnail(strTargetFile, strThumbFile); } } // end response if (Request.Form["fback"] == "true") { Response.Redirect(this.strCurrLink); } else { Response.End(); } break; case "download": FileInfo objFile = new FileInfo(clsConfig.strUploadPath + "\\" + this.strFile); Response.ClearHeaders(); Response.AddHeader("Pragma", "private"); Response.AddHeader("Cache-control", "private, must-revalidate"); Response.AddHeader("Content-Type", "application/octet-stream"); Response.AddHeader("Content-Length", objFile.Length.ToString()); Response.AddHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(this.strFile)); Response.WriteFile(clsConfig.strUploadPath + "\\" + this.strFile); break; case "delfile": try { File.Delete(clsConfig.strUploadPath + "\\" + this.strFile); if (File.Exists(clsConfig.strThumbPath + "\\" + this.strFile)) { File.Delete(clsConfig.strThumbPath + "\\" + this.strFile); } } catch { //TODO: set error } goto default; case "delfolder": try { Directory.Delete(clsConfig.strUploadPath + "\\" + strFolder,true); Directory.Delete(clsConfig.strThumbPath + "\\" + strFolder, true); } catch { //TODO: set error } goto default; default: //just a regular page load if (this.strCurrPath != "") { // add "up one" folder this.objFItem = new TinyFileManager.NET.clsFileItem(); this.objFItem.strName = ".."; this.objFItem.boolIsFolder = true; this.objFItem.boolIsFolderUp = true; this.objFItem.intColNum = this.getNextColNum(); this.objFItem.strPath = this.getUpOneDir(this.strCurrPath); this.objFItem.strClassType = "dir"; this.objFItem.strDeleteLink = "<a class=\"btn erase-button top-right disabled\" title=\"Erase\"><i class=\"icon-trash\"></i></a>"; this.objFItem.strThumbImage = "img/ico/folder_return.png"; this.objFItem.strLink = "<a title=\"Open\" href=\"" + this.strCurrLink + "&currpath=" + this.objFItem.strPath + "\"><img class=\"directory-img\" src=\"" + this.objFItem.strThumbImage + "\" alt=\"folder\" /><h3>..</h3></a>"; this.arrLinks.Add(objFItem); } //load folders arrFolders = Directory.GetDirectories(clsConfig.strUploadPath + this.strCurrPath); foreach (string strF in arrFolders) { this.objFItem = new TinyFileManager.NET.clsFileItem(); this.objFItem.strName = Path.GetFileName(strF); this.objFItem.boolIsFolder = true; this.objFItem.intColNum = this.getNextColNum(); this.objFItem.strPath = this.strCurrPath + Path.GetFileName(strF); this.objFItem.strClassType = "dir"; if (clsConfig.boolAllowDeleteFolder) { this.objFItem.strDeleteLink = "<a href=\"" + this.strCurrLink + "&cmd=delfolder&folder=" + this.objFItem.strPath + "&currpath=" + this.strCurrPath + "\" class=\"btn erase-button top-right\" onclick=\"return confirm('Are you sure to delete the folder and all the objects in it?');\" title=\"Erase\"><i class=\"icon-trash\"></i></a>"; } else { this.objFItem.strDeleteLink = "<a class=\"btn erase-button top-right disabled\" title=\"Erase\"><i class=\"icon-trash\"></i></a>"; } this.objFItem.strThumbImage = "img/ico/folder.png"; this.objFItem.strLink = "<a title=\"Open\" href=\"" + this.strCurrLink + "&currpath=" + this.objFItem.strPath + "\"><img class=\"directory-img\" src=\"" + this.objFItem.strThumbImage + "\" alt=\"folder\" /><h3>" + this.objFItem.strName + "</h3></a>"; this.arrLinks.Add(objFItem); } // load files arrFiles = Directory.GetFiles(clsConfig.strUploadPath + this.strCurrPath); foreach (string strF in arrFiles) { this.objFItem = new TinyFileManager.NET.clsFileItem(); this.objFItem.strName = Path.GetFileNameWithoutExtension(strF); this.objFItem.boolIsFolder = false; this.objFItem.intColNum = this.getNextColNum(); this.objFItem.strPath = this.strCurrPath + Path.GetFileName(strF); this.objFItem.boolIsImage = this.isImageFile(Path.GetFileName(strF)); this.objFItem.boolIsVideo = this.isVideoFile(Path.GetFileName(strF)); this.objFItem.boolIsMusic = this.isMusicFile(Path.GetFileName(strF)); this.objFItem.boolIsMisc = this.isMiscFile(Path.GetFileName(strF)); // get display class type if (this.objFItem.boolIsImage) { this.objFItem.strClassType = "2"; } else { if (this.objFItem.boolIsMisc) { this.objFItem.strClassType = "3"; } else { if (this.objFItem.boolIsMusic) { this.objFItem.strClassType = "5"; } else { if (this.objFItem.boolIsVideo) { this.objFItem.strClassType = "4"; } else { this.objFItem.strClassType = "1"; } } } } // get delete link if (clsConfig.boolAllowDeleteFile) { this.objFItem.strDeleteLink = "<a href=\"" + this.strCurrLink + "&cmd=delfile&file=" + this.objFItem.strPath + "&currpath=" + this.strCurrPath + "\" class=\"btn erase-button\" onclick=\"return confirm('Are you sure to delete this file?');\" title=\"Erase\"><i class=\"icon-trash\"></i></a>"; } else { this.objFItem.strDeleteLink = "<a class=\"btn erase-button disabled\" title=\"Erase\"><i class=\"icon-trash\"></i></a>"; } // get thumbnail image if (this.objFItem.boolIsImage) { this.objFItem.strThumbImage = clsConfig.strThumbURL + "/" + this.objFItem.strPath.Replace('\\', '/'); } else { if (File.Exists(Directory.GetParent(Request.PhysicalPath).FullName + "\\img\\ico\\" + Path.GetExtension(strF).TrimStart('.').ToUpper() + ".png")) { this.objFItem.strThumbImage = "img/ico/" + Path.GetExtension(strF).TrimStart('.').ToUpper() + ".png"; } else { this.objFItem.strThumbImage = "img/ico/Default.png"; } } this.objFItem.strDownFormOpen = "<form action=\"dialog.aspx?cmd=download&file=" + this.objFItem.strPath + "\" method=\"post\" class=\"download-form\">"; if (this.objFItem.boolIsImage) { this.objFItem.strPreviewLink = "<a class=\"btn preview\" title=\"Preview\" data-url=\"" + clsConfig.strUploadURL + "/" + this.objFItem.strPath.Replace('\\', '/') + "\" data-toggle=\"lightbox\" href=\"#previewLightbox\"><i class=\"icon-eye-open\"></i></a>"; } else { this.objFItem.strPreviewLink = "<a class=\"btn preview disabled\" title=\"Preview\"><i class=\"icon-eye-open\"></i></a>"; } this.objFItem.strLink = "<a href=\"#\" title=\"Select\" onclick=\"" + this.strApply + "('" + clsConfig.strUploadURL + "/" + this.objFItem.strPath.Replace('\\', '/') + "'," + this.strType + ")\";\"><img data-src=\"holder.js/140x100\" alt=\"140x100\" src=\"" + this.objFItem.strThumbImage + "\" height=\"100\"><h4>" + this.objFItem.strName + "</h4></a>"; // check to see if it's the type of file we are looking at if ((this.boolOnlyImage && this.objFItem.boolIsImage) || (this.boolOnlyVideo && this.objFItem.boolIsVideo) || (!this.boolOnlyImage && !this.boolOnlyVideo)) { this.arrLinks.Add(objFItem); } } // foreach break; } // switch } // page load
protected void Page_Load(object sender, EventArgs e) { if (FrameworkSettings.CurrentUser == null) { throw new Exception("You must be logged into the CMS inorder to access the file manager"); } strCmd = Request.QueryString["cmd"] + ""; strType = Request.QueryString["type"] + ""; strFolder = Request.QueryString["folder"] + ""; strFile = Request.QueryString["file"] + ""; strLang = Request.QueryString["lang"] + ""; //not used right now, but grab it strEditor = Request.QueryString["editor"] + ""; strCurrPath = Request.QueryString["currpath"] + ""; strProfile = Request.QueryString["profile"] + ""; baseUrl = Request.QueryString["BaseUrl"] + ""; var defaultRootPath = "/media/uploads/"; if (!FrameworkSettings.CurrentUser.IsInRole(RoleEnum.Developer)) { var requestPath = URIHelper.ConvertAbsUrlToTilda(strCurrPath).Replace("\\", "/").Replace("//", "/").Replace("~/", "/"); if (!requestPath.Contains(defaultRootPath)) { strCurrPath = defaultRootPath; } } if (string.IsNullOrEmpty(baseUrl)) { var protocal = (Request.IsSecureConnection) ? "https://" : "http://"; baseUrl = protocal + Request.Url.Authority; } if (!strCurrPath.StartsWith("http") && File.Exists(Server.MapPath(strCurrPath))) { var fileInfo = new FileInfo(Server.MapPath(strCurrPath)); var dir = fileInfo.Directory.FullName; var absUrl = URIHelper.ConvertAbsPathToAbsUrl(dir); strCurrPath = URIHelper.ConvertAbsUrlToTilda(absUrl); } if(strCurrPath.StartsWith("~/")) { strCurrPath = strCurrPath.Replace("~/", "/"); } if ((strCurrPath == "") || strCurrPath.Contains("//") || !Directory.Exists(Server.MapPath(strCurrPath))) strCurrPath = defaultRootPath; if (strCurrPath.Contains(baseUrl)) { strCurrPath = strCurrPath.Replace(baseUrl, ""); } strCurrPath = strCurrPath.Replace("/", "\\").Replace("\\\\", "\\"); // load config this.objConfig = new clsConfig(strProfile); //check inputs if (this.strCurrPath.Length > 0) { this.strCurrPath = this.strCurrPath.TrimEnd('\\'); if (!this.strCurrPath.EndsWith("\\")) this.strCurrPath = this.strCurrPath + "\\"; } //set the apply string, based on the passed type if (this.strType == "") { this.strType = "0"; } switch (this.strType) { case "1": this.strApply = "apply_img"; this.boolOnlyImage = true; this.strAllowedFileExt = this.objConfig.strAllowedImageExtensions; break; case "2": this.strApply = "apply_link"; this.strAllowedFileExt = this.objConfig.strAllowedAllExtensions; break; default: if (Convert.ToInt32(this.strType) >= 3) { this.strApply = "apply_video"; this.boolOnlyVideo = true; this.strAllowedFileExt = this.objConfig.strAllowedVideoExtensions; } else { this.strApply = "apply"; this.strAllowedFileExt = this.objConfig.strAllowedAllExtensions; } break; } //setup current link strCurrLink = "dialog.aspx?type=" + this.strType + "&editor=" + this.strEditor + "&lang=" + this.strLang + "&profile=" + this.strProfile + "&targetId=" + Request["targetId"]; switch (strCmd) { case "debugsettings": Response.Write("<style>"); Response.Write("body {font-family: Verdana; font-size: 10pt;}"); Response.Write(".table {display: table; border-collapse: collapse; margin: 20px; background-color: #e7e5e5;}"); Response.Write(".tcaption {display: table-caption; padding: 5px; font-size: 14pt; font-weight: bold; background-color: #9fcff7;}"); Response.Write(".tr {display: table-row;}"); Response.Write(".tr:hover {background-color: #f0f2f3;}"); Response.Write(".td {display: table-cell; padding: 5px; border: 1px solid #a19e9e;}"); Response.Write("</style>"); Response.Write("<div class=\"table\">"); //start table Response.Write("<div class=\"tcaption\">Operating Settings</div>"); //caption Response.Write("<div class=\"tbody\">"); //start body Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowCreateFolder:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.boolAllowCreateFolder + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowDeleteFile:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.boolAllowDeleteFile + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowDeleteFolder:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.boolAllowDeleteFolder + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowUploadFile:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.boolAllowUploadFile + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>MaxUploadSizeMb:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.intMaxUploadSizeMb + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedAllExtensions:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strAllowedAllExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedFileExtensions:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strAllowedFileExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedImageExtensions:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strAllowedImageExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedMiscExtensions:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strAllowedMiscExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedMusicExtensions:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strAllowedMusicExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>AllowedVideoExtensions:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strAllowedVideoExtensions + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>BaseURL:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strBaseURL + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>DocRoot:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strDocRoot + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>ThumbPath:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strThumbPath + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>ThumbURL:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strThumbURL + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>UploadPath:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strUploadPath + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>UploadURL:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strUploadURL + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>FillSelector:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strFillSelector + "</div>"); Response.Write("</div>"); //end row Response.Write("<div class=\"tr\">"); // start row Response.Write("<div class=\"td\"><b>PopupCloseCode:</b></div>"); Response.Write("<div class=\"td\">" + this.objConfig.strPopupCloseCode + "</div>"); Response.Write("</div>"); //end row Response.Write("</div>"); //end body Response.Write("</div>"); //end table Response.End(); break; case "createfolder": try { strFolder = Request.Form["folder"] + ""; //forge ahead without checking for existence //catch will save us Directory.CreateDirectory(this.objConfig.strUploadPath + "\\" + strFolder); Directory.CreateDirectory(this.objConfig.strThumbPath + "\\" + strFolder); // end response, since it's an ajax call Response.End(); } catch { //TODO: write error } break; case "upload": strFolder = Request.Form["folder"] + ""; HttpPostedFile filUpload = Request.Files["file"]; string strTargetFile; string strThumbFile; //check file was submitted if ((filUpload != null) && (filUpload.ContentLength > 0)) { var name = new FileInfo(filUpload.FileName).Name.ToLower(); strTargetFile = this.objConfig.strUploadPath + this.strFolder + name; strThumbFile = this.objConfig.strThumbPath + this.strFolder + name; filUpload.SaveAs(strTargetFile); /*if (this.isImageFile(strTargetFile)) { this.createThumbnail(strTargetFile, strThumbFile); }*/ } // end response if (Request.Form["fback"] == "true") { Response.Redirect(this.strCurrLink); } else { Response.End(); } break; case "download": FileInfo objFile = new FileInfo(this.objConfig.strUploadPath + "\\" + this.strFile); Response.ClearHeaders(); Response.AddHeader("Pragma", "private"); Response.AddHeader("Cache-control", "private, must-revalidate"); Response.AddHeader("Content-Type", "application/octet-stream"); Response.AddHeader("Content-Length", objFile.Length.ToString()); Response.AddHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(this.strFile)); Response.WriteFile(this.objConfig.strUploadPath + "\\" + this.strFile); break; case "delfile": try { File.Delete(this.objConfig.strUploadPath + "\\" + this.strFile); if (File.Exists(this.objConfig.strThumbPath + "\\" + this.strFile)) { File.Delete(this.objConfig.strThumbPath + "\\" + this.strFile); } } catch { //TODO: set error } goto default; case "delfolder": try { Directory.Delete(this.objConfig.strUploadPath + "\\" + strFolder, true); Directory.Delete(this.objConfig.strThumbPath + "\\" + strFolder, true); } catch { //TODO: set error } goto default; default: //just a regular page load if (this.strCurrPath != "") { // add "up one" folder this.objFItem = new TinyFileManager.NET.clsFileItem(); this.objFItem.strName = ".."; this.objFItem.boolIsFolder = true; this.objFItem.boolIsFolderUp = true; this.objFItem.intColNum = this.getNextColNum(); this.objFItem.strPath = this.getUpOneDir(this.strCurrPath); this.objFItem.strClassType = "dir"; this.objFItem.strDeleteLink = "<a class=\"btn erase-button top-right disabled\" title=\"Erase\"><i class=\"icon-trash\"></i></a>"; this.objFItem.strThumbImage = "img/ico/folder_return.png"; this.objFItem.strLink = "<a title=\"Open\" href=\"" + this.strCurrLink + "&currpath=" + this.objFItem.strPath + "\"><img class=\"directory-img\" src=\"" + this.objFItem.strThumbImage + "\" alt=\"folder\" /><h3>..</h3></a>"; this.arrLinks.Add(objFItem); } if (this.strCurrPath.Contains(this.objConfig.strUploadPath)) this.strCurrPath = defaultRootPath; //load folders arrFolders = Directory.GetDirectories(this.objConfig.strUploadPath + this.strCurrPath); var renameLink = "<a href='javascript:void(0)' class='btn btn-rename'><i class='fa fa-text-width' aria-hidden='true'></i></a>"; foreach (string strF in arrFolders) { this.objFItem = new TinyFileManager.NET.clsFileItem(); this.objFItem.strName = Path.GetFileName(strF); this.objFItem.boolIsFolder = true; this.objFItem.intColNum = this.getNextColNum(); this.objFItem.strPath = this.strCurrPath + Path.GetFileName(strF); this.objFItem.strClassType = "dir"; if (this.objConfig.boolAllowDeleteFolder) { this.objFItem.strDeleteLink = "<a href=\"" + this.strCurrLink + "&cmd=delfolder&folder=" + this.objFItem.strPath + "&currpath=" + this.strCurrPath + "\" class=\"btn erase-button top-right\" onclick=\"return confirm('Are you sure you want to delete this folder? NOTE: All the subfolders and files under this folder will also be deleted and there is no way of getting them back.');\" title=\"Erase\"><i class=\"icon-trash\"></i></a>"; this.objFItem.strDeleteLink = this.objFItem.strDeleteLink + renameLink; } else { this.objFItem.strDeleteLink = "<a class=\"btn erase-button top-right disabled\" title=\"Erase\"><i class=\"icon-trash\"></i></a>"; } this.objFItem.strThumbImage = "img/ico/folder.png"; this.objFItem.strLink = "<a title=\"Open\" href=\"" + this.strCurrLink + "&currpath=" + this.objFItem.strPath + "\"><img class=\"directory-img\" src=\"" + this.objFItem.strThumbImage + "\" alt=\"folder\" /><h3>" + this.objFItem.strName + "</h3></a>"; this.arrLinks.Add(objFItem); } // load files arrFiles = Directory.GetFiles(this.objConfig.strUploadPath + this.strCurrPath); foreach (string strF in arrFiles) { this.objFItem = new TinyFileManager.NET.clsFileItem(); this.objFItem.strName = Path.GetFileNameWithoutExtension(strF); this.objFItem.boolIsFolder = false; this.objFItem.strPath = this.strCurrPath + Path.GetFileName(strF); this.objFItem.boolIsImage = this.isImageFile(Path.GetFileName(strF)); this.objFItem.boolIsVideo = this.isVideoFile(Path.GetFileName(strF)); this.objFItem.boolIsMusic = this.isMusicFile(Path.GetFileName(strF)); this.objFItem.boolIsMisc = this.isMiscFile(Path.GetFileName(strF)); // check to see if it's the type of file we are looking at if ((this.boolOnlyImage && this.objFItem.boolIsImage) || (this.boolOnlyVideo && this.objFItem.boolIsVideo) || (!this.boolOnlyImage && !this.boolOnlyVideo)) { this.objFItem.intColNum = this.getNextColNum(); // get display class type if (this.objFItem.boolIsImage) { this.objFItem.strClassType = "2"; } else { if (this.objFItem.boolIsMisc) { this.objFItem.strClassType = "3"; } else { if (this.objFItem.boolIsMusic) { this.objFItem.strClassType = "5"; } else { if (this.objFItem.boolIsVideo) { this.objFItem.strClassType = "4"; } else { this.objFItem.strClassType = "1"; } } } } // get delete link if (this.objConfig.boolAllowDeleteFile) { this.objFItem.strDeleteLink = "<a href=\"" + this.strCurrLink + "&cmd=delfile&file=" + this.objFItem.strPath + "&currpath=" + this.strCurrPath + "\" class=\"btn erase-button\" onclick=\"return confirm('Are you sure you want to delete this file? NOTE: There is no way to get this file back once you delete it');\" title=\"Erase\"><i class=\"icon-trash\"></i></a>"; } else { this.objFItem.strDeleteLink = "<a class=\"btn erase-button disabled\" title=\"Erase\"><i class=\"icon-trash\"></i></a>"; } // get thumbnail image if (this.objFItem.boolIsImage) { // first check to see if thumb exists if (!File.Exists(this.objConfig.strThumbPath + this.objFItem.strPath)) { // thumb doesn't exist, create it strTargetFile = this.objConfig.strUploadPath + this.objFItem.strPath; strThumbFile = this.objConfig.strThumbPath + this.objFItem.strPath; this.createThumbnail(strTargetFile, strThumbFile); } if (this.objFItem.strPath.StartsWith("\\")) this.objFItem.strPath = this.objFItem.strPath.Substring(1); this.objFItem.strThumbImage = (this.objConfig.strThumbURL + this.objFItem.strPath.Replace('\\', '/')); } else { if (File.Exists(Directory.GetParent(Request.PhysicalPath).FullName + "\\img\\ico\\" + Path.GetExtension(strF).TrimStart('.').ToUpper() + ".png")) { this.objFItem.strThumbImage = "img/ico/" + Path.GetExtension(strF).TrimStart('.').ToUpper() + ".png"; } else { this.objFItem.strThumbImage = "img/ico/Default.png"; } } this.objFItem.strDownFormOpen = "<form action=\"dialog.aspx?cmd=download&file=" + this.objFItem.strPath + "\" method=\"post\" class=\"download-form\">"; var path = strF.Replace(Server.MapPath("~/"), "").Replace("\\", "/").Replace("///", "/"); if (!path.StartsWith("/")) path = "/" + path; if (this.objFItem.boolIsImage) { this.objFItem.strPreviewLink = "<a class=\"btn preview\" title=\"Preview\" data-url=\"" + this.objConfig.strUploadURL + "/" + this.objFItem.strPath + "\" data-toggle=\"lightbox\" href=\"#previewLightbox\"><i class=\"icon-eye-open\"></i></a><a class='btn' href='"+ baseUrl + path + "' target='_blank'><i class='fa fa-external-link'></i></a>"; } else { this.objFItem.strPreviewLink = "<a class=\"btn preview disabled\" title=\"Preview\"><i class=\"icon-eye-open\"></i></a> <a class='btn' href='" + baseUrl + path + "' target='_blank'><i class='fa fa-external-link'></i></a>"; } this.objFItem.strPreviewLink = this.objFItem.strPreviewLink + renameLink + "<a class='btn' href='/Admin/Views/PageHandlers/FileEditor/Default.aspx?LoadFile=" + path + "' target='_blank'><i class='fa fa-pencil'></i></a>"; this.objFItem.strLink = "<a href=\"#\" title=\"Select\" onclick=\"" + this.strApply + "('" + baseUrl + path + "'," + this.strType + ")\";\"><img data-src=\"holder.js/140x100\" alt=\"140x100\" src=\"" + this.objFItem.strThumbImage + "?width=200" + "\" height=\"100\"><h4>" + this.objFItem.strName + new FileInfo(this.objFItem.strPath).Extension + "</h4></a>"; this.arrLinks.Add(objFItem); } } // foreach break; } // switch } // page load