This is a migrated thread and some comments may be shown as answers.

Lingering Issues After SP1

8 Answers 216 Views
FileExplorer
This is a migrated thread and some comments may be shown as answers.
Shaun Peet
Top achievements
Rank 2
Shaun Peet asked on 03 Apr 2009, 08:32 PM
A couple of strange issues I just can't get sorted out:

1) I use RadWindow forms for data-editing all over the place, and my MasterPage for the form contains a RadSplitter with a top pane for the form and the buttom pane for the commands ("Insert", "Update", etc).  If I put a RadFileExplorer in the top pane then:

  • With width=100% - the border around the control is correct, but the grid extends beyond the border of the control width-wise and the addressbox does not go to 100%
  • With width=640px - the border and the addressbox are correct, but the grid still extends beyond the border of the control width-wise
  • With height=100% - the border of the control looks like it's about 100px high, and both the treeview and the grid extend beyond the border of the control height-wise
  • With height=340px - the border shows the correct height, but both the tree and the grid still extend beyond their restrictions

My work-around so far has been to create a form that uses a different MasterPage (in fact, no MasterPage) that mimics the design of all my other forms, but this introduces a longer-term problem in maintainability.  In the short-term though, problem #2 is far more urgent.

2) I set all FileBrowsers properties programatically - both those that are used by the built-in dialogs of the RadEditor as well as any RadFileExplorers that I use.  In setting up the configuration for either one, they pass through the same set of functions on the server for specifiying ViewPaths, UploadPaths, DeletePaths, etc.  The problem that I'm seeing is that a user can open a DocumentManager from the toolbar of an Editor and they have the expected read/write permissions to root-level folders and sub-folders.  However, when that same user visits my form with a RadFileExplorer, which has the exact same paths, they cannot write to any sub-folder, however they can write to the root folder; and they can read all folders just like in the DocumentManager.

My work-around is that I have to tell my users who are managing their documents that they have to go to a completely unrelated area of the site so that they can use the RadEditor's Document Manager for uploading, then return back to their initial page to select that file for use.  I'm hoping that's enough information for the Telerik Guru's to test out because the project is fairly huge and creating a small test project at this point is rather cumbersome.  Thanks,

Shaun.

8 Answers, 1 is accepted

Sort by
0
Lini
Telerik team
answered on 06 Apr 2009, 04:30 PM
Hello Shaun,

For the first problem (explorer in splitter), please try the following workaround in the server code:

        RadSplitter splitter = (RadSplitter)RadFileExplorer1.FindControl("splitter");
        splitter.ResizeWithParentPane = false;

where RadFileExplorer1 is a reference to the file explorer control. I think this is a bug in the explorer code and the above code should fix it.

About issue #2, I am not really sure I understand the scenario. I assume that you have some function that takes either a RadEditor.DocumentManager or a RadFileExplorer.Configuration object and configures the View, Upload, Delete paths of that object. Is that the case? Are you using the default content provider or a custom one? In which place of the page lifecycle does this happen (Load, Init, etc.)?


Sincerely yours,
Lini
the Telerik team

Check out Telerik Trainer , the state of the art learning tool for Telerik products.
0
Shaun Peet
Top achievements
Rank 2
answered on 06 Apr 2009, 04:47 PM
Hi Lini,

I'll try the splitter bug work-around as you've suggested and let you know whether or not that worked.  Is that something that will likely be fixed in future builds or is the work-around permanent?

You are correct about what I'm doing with the second problem, and to answer your questions:
1) I am using a custom FileSystemContentProvider, although it's only very slightly modified to allow for uploading of zip files:

 
Public Class MBSportsSystemContentProvider  
    Inherits FileSystemContentProvider  
 
    Public Sub New(ByVal context As HttpContext, ByVal searchPatters As String(), ByVal viewPaths As String(), ByVal uploadPaths() As StringByVal deletePaths() As StringByVal selectedUrl As StringByVal selectedItemTag As String)  
        MyBase.New(context, searchPatters, viewPaths, uploadPaths, deletePaths, selectedUrl, selectedItemTag)  
    End Sub 
 
    Public Overrides Function StoreFile(ByVal file As UploadedFile, ByVal path As StringByVal name As StringByVal ParamArray arguments As String()) As String 
        Dim relFolder As String = path  
        Dim relFull = IO.Path.Combine(relFolder, name)  
        Dim mapFolder As String = MyBase.Context.Server.MapPath(relFolder)  
        Dim mapFull As String = MyBase.Context.Server.MapPath(relFull)  
        If file.GetExtension = ".zip" Then 
            Dim lastValidFile As String = "" 
            Using ZIS As New ZipInputStream(file.InputStream)  
                Dim ZE As ZipEntry = ZIS.GetNextEntry  
                While Not IsNothing(ZE)  
                    Dim strDir As String = IO.Path.GetDirectoryName(ZE.Name)  
                    Dim strFil As String = IO.Path.GetFileName(ZE.Name)  
                    If strDir.Length > 0 Then 
                        IO.Directory.CreateDirectory(mapFolder & strDir)  
                    End If 
                    If strFil <> String.Empty Then 
                        If IsValidFileTypeAfterUnZip(ZE.Name) Then 
                            DeleteFileIfAlreadyExists(mapFolder & ZE.Name)  
                            lastValidFile = relFolder & ZE.Name  
                            Using FS As FileStream = IO.File.Create(mapFolder & ZE.Name)  
                                Dim i As Integer = 2048  
                                Dim b As Byte() = New Byte(2048) {}  
                                While True 
                                    i = ZIS.Read(b, 0, b.Length)  
                                    If i > 0 Then 
                                        FS.Write(b, 0, i)  
                                    Else 
                                        Exit While 
                                    End If 
                                End While 
                            End Using  
                        End If 
                    End If 
                    ZE = ZIS.GetNextEntry  
                End While 
            End Using  
            DeleteEmptyDirectoriesAfterZip(mapFolder)  
            Return lastValidFile  
        Else 
            DeleteFileIfAlreadyExists(mapFull)  
            file.SaveAs(mapFull)  
            Return relFull  
        End If 
    End Function 
 
    Private Sub DeleteFileIfAlreadyExists(ByVal mapFull As String)  
        If IO.File.Exists(mapFull) Then 
            IO.File.Delete(mapFull)  
        End If 
    End Sub 
 
    Private Sub DeleteEmptyDirectoriesAfterZip(ByVal mapFolder As String)  
        For Each Dir As String In IO.Directory.GetDirectories(mapFolder)  
            DeleteEmptyDirectoriesAfterZip(Dir)  
            If IO.Directory.GetFiles(Dir).Count = 0 And IO.Directory.GetDirectories(Dir).Count = 0 Then 
                IO.Directory.Delete(Dir)  
            End If 
        Next 
    End Sub 
 
    Private Function IsValidFileTypeAfterUnZip(ByVal fileName As StringAs Boolean 
        Dim strExt As String = Right(fileName, fileName.Length - fileName.LastIndexOf(".")).ToLower  
        If strExt = ".zip" Then 
            Return False 
        Else 
            For Each s As String In MyBase.SearchPatterns  
                s = Right(s, s.Length - s.LastIndexOf(".")).ToLower  
                If s = strExt Then Return True 
            Next 
        End If 
        Return False 
    End Function 
 
End Class 
 


2) When the code is executed by a RadEditor, it is done in the PreRender event of that editor.  In the custom dialog using a FileExplorer, it's executed during the Page_Load.  I actually hadn't thought to try it elsewhere - thanks for refreshing my memory about that option.  The reason I'm doing it in the PreRender of the editor had to do with a similar problem I was having with executing during Page_Load, so perhaps using the PreRender of the FileExplorer will fix it.  I'll try it after lunch as post the results.

Thanks for the help!  Be sure to update your Telerik points ;)

Shaun.
0
Shaun Peet
Top achievements
Rank 2
answered on 06 Apr 2009, 05:14 PM
Ok, Problem #2 appears to be solved:

I tried the PreRender event of the RadFileExplorer and that did not work at all - no paths appeared to be set.  So then I tried Page_Init and it worked as expected.  Hopefully that extra info can help in determining whether this is a bug or expected.

In testing that out I also discovered another small bug:
  • If you delete a folder that is currently selected it doesn't de-select that folder
  • It tries to do a callback with that folder, and fails
  • It also does not update the contents in the parent folder without having to manually refresh (which then refreshes the entire tree)

My suggestion would be to select the parent folder if one exists, and re-load the contents of that folder.  If no parent exists then select a different root folder from the tree if one exists.  If no other parent folders exist in the tree then it's a situation where there are no longer and ViewPaths and I'd suggest throwing a RadAlert saying that the explorer can no longer be used since there are no paths available.

For Problem #1, using the work-around you've suggested seems to have fixed the problem with setting the width (other than the address box, which we've dealt with in another thread).  Setting the height seems to have issues still though.  I'll be going through and checking to make sure that all parents have their heights set to allow for a 100% height; but with that said I can certainly live with manually setting the height - anybody with a resolution higher than 800 X 600 will have a good experience and the others can suffer as they should ;)  In any case, I will make more attempts to get the 100% height sorted out since it may help others in the community.

Shaun.

0
Shaun Peet
Top achievements
Rank 2
answered on 06 Apr 2009, 05:31 PM
Some more very small design / iconography issues.  See if you can spot them!:

www.mycal.ca/media/temp/fileexplorerdesignissues.png

0
Tervel
Telerik team
answered on 07 Apr 2009, 08:06 AM
Hi Shaun,

Thanks for the report and suggestions related to deleting a folder. We logged this and will be taking care of it shortly.

We are glad to know that you were able to resolve your Issue #2 - indeed, calling your configuration code on PreRender is too late in the life cycle of the control - hence the reason for the problem. We will be adding this information to the RadFileExplorer documentation.

Let me summarize the list of reported issues so far that will be incorporated in the RadFileExplorer:
1. Width of the Address bar textbox will adjust automatically when RadFileExplorer Width = 100%
2. RadSplitter wrapper of RadFileExplorer will not resize automatically when the FileExplorer is nested in another splitter

As far your last screenshot goes - the only problem we were able to spot is the difference in the way the first item in the grid is aligned, when compared to the rest. If this is the case, another customer already reported this - and we will be addressing the problem shortly as well. The issue is related to the RadFileExplorer's current implementation which loads its initial folder from the server-side but then uses client binding for all subsequent requests. We are working on changing this and the change will be implemented soon as well.

With your help and the help of other community members that got to try this new control we have been able to make substantial progress in the last couple of weeks. Thank you very much for your help and efforts.

Greetings,
Tervel
the Telerik team

Check out Telerik Trainer , the state of the art learning tool for Telerik products.
0
Shaun Peet
Top achievements
Rank 2
answered on 07 Apr 2009, 02:38 PM
Hi Tervel,

I just wanted to clarify that calling the code in the Page_Load event also does not work - albeit with different results than in PreRender:

PreRender (of the control) - no paths are set, therefore the tree is completely empty
Page_Load - all ViewPaths are properly set, but the UploadPaths and DeletePaths have strange functionality in that the "root" nodes of the tree work properly and all child nodes (subfolders) are read-only.  This is particularly strange since I didn't think it was possible to define a parent folder as writeable and one of its subfolders as read-only.

The other thing that's a bit off with the screenshot provided was that there is no icon for the xlsX file extension, and I'm assuming the same would be true for pptx, docx and all the other Office2007 file extensions.

Overall this new control, and its usage within the dialogs of the RadEditor is truly fantastic and a huge improvement over prior versions.  I'm glad that Telerik continues to see eye-to-eye with its customers regarding critical feedback as the best mechanism for improvement.  It's probably the most important reason that Telerik is a great company with great products.

Shaun.
0
Accepted
Lini
Telerik team
answered on 09 Apr 2009, 02:42 PM
Hi Shaun,

The FileBrowser's content provider is initialized in the OnLoad event. Whatever view/upload/delete paths are set at that point will be used by the control. To be on the safe side, you can try populating the paths in the Page_PreLoad event and see if it works then. If the child folders are behaving differently than the root ones, it is possible that you are not setting the correct paths on page postback(ajax request) or the control's ViewState is turned off.

About the  file icons - I have added .xlsx and .pptx to the list of supported extensions so they should display the correct icons now.

All the best,
Lini
the Telerik team

Check out Telerik Trainer , the state of the art learning tool for Telerik products.
0
Shaun Peet
Top achievements
Rank 2
answered on 11 Apr 2009, 04:14 AM
Perfect.  The latest build (April 9) fixes the file extension issue, and while I haven't tested the sizing issue I'm sure it fixed that too (according to the release notes).  Great work as always!

FYI, setting the paths in the Page_Init is working so I'll leave it there for now.
Tags
FileExplorer
Asked by
Shaun Peet
Top achievements
Rank 2
Answers by
Lini
Telerik team
Shaun Peet
Top achievements
Rank 2
Tervel
Telerik team
Share this question
or