Ticket #2421: webPermissions.patch

File webPermissions.patch, 10.3 KB (added by mira, 15 years ago)
  • modules/org.sophie2.server.webui/src/main/resources/org/sophie2/server/webui/content/main.css

    ### Eclipse Workspace Patch 1.0
    #P sophie
     
    101101        border: 1px outset #CCCCCC; 
    102102        color: #222222; 
    103103        padding: 0.1em 0.5em; 
    104         clear:left; 
    105104        float:left; 
    106105} 
    107106 
  • modules/org.sophie2.s2s/src/main/java/org/sophie2/s2s/ServerModule.java

     
    4444                                                ServerResourceHelper helper = ServerCoreModule.get().getResourceHelperExtension( 
    4545                                                                ).getObject(); 
    4646                                                helper.initialize(); 
    47                                                 WebAppModule.get().startServer(8888); 
     47                                                WebAppModule.get().startServer(9016); 
    4848                                        } 
    4949                                }); 
    5050 
  • modules/org.sophie2.main.func.servers/src/main/java/org/sophie2/main/func/servers/logic/ServersTabLogic.java

     
    1414import org.sophie2.base.connectivity.TransferManager; 
    1515import org.sophie2.base.connectivity.TransferManager.TransferManagerCache; 
    1616import org.sophie2.base.connectivity.resources.ResourceDirectoryH; 
    17 import org.sophie2.base.connectivity.resources.ResourceDirectoryR4; 
    1817import org.sophie2.base.connectivity.resources.ServerAccessOptions; 
    1918import org.sophie2.base.connectivity.resources.binary.FacadeBinData; 
    2019import org.sophie2.base.connectivity.resources.binary.FacadeBinDataUtil; 
     
    444443                        final ResourceRefR4 resourceRef =  
    445444                                ResourceRefR4.makeChild(output.getResourcePath()); 
    446445 
    447                         StoredResourceAccess directoryAccess = (StoredResourceAccess) serverResourcesDirectory.getAccess(); 
    448                         if (ResourceDirectoryR4.KEY_RESOURCES.get(directoryAccess).contains(resourceRef)) { 
     446                        if (serverResourcesDirectory.getResources().contains(resourceRef)) { 
    449447                                DialogUtils.showErrorDialog(bookDocView.swingComponent().get(), 
    450448                                                "There is already a resource at "+ resourceRef, "Could not upload resource"); 
    451449                                return false; 
     
    455453                        AccountH account = output.getAccount(); 
    456454                        ServerConnection connection = accountsConnections.get(account); 
    457455 
     456                        StoredResourceAccess directoryAccess = (StoredResourceAccess) serverResourcesDirectory.getAccess(); 
    458457                        ResourceRefR4 absUserRef = directoryAccess.getAccessOptions().getUser(); 
    459                         final ResourceRefR4 userRef = UserH.getRelRefFromUsers(absUserRef); 
    460                         final SecurityPermission othersPermissions = output.getPermissionLevel(); 
    461                         final ResourceRefR4 defGroupRef = UserGroupR4.DEF_GROUP_REF; 
    462  
    463                         new AutoAction(Message.create("Setting up the access permissions"), true) { 
    464  
    465                                 @Override 
    466                                 public void performAuto() { 
    467                                         //Start at empty map every time you upload a book 
    468                                         ImmMap<ResourceRefR4, SecurityPermission> permissions =  
    469                                                 ImmTreeMap.<ResourceRefR4, SecurityPermission>empty() 
    470                                                 .put(userRef, SecurityPermission.WRITE); 
    471                                         if (SecurityPermission.NONE != othersPermissions) { 
    472                                                 permissions = permissions.put(defGroupRef, othersPermissions); 
    473                                         } 
    474                                         getChanger().setRaw(ResourceR4.KEY_SECURITY, permissions); 
    475                                 } 
    476  
    477                         }.register(bookAccess); 
    478  
    479                         ResourceModel bookModel = bookAccess.getHead().getModel(); 
    480                         ResourceRefR4 absoluteRef = serverResourcesDirectory.getRef().sub(resourceRef); 
    481                         String sessionId = connection.sessionId().get(); 
    482                         final ResourceModel serverBookModel = FacadeBinDataUtil.convertBinDatasToFacade( 
    483                                         connection.getFacade(), absoluteRef, sessionId, bookModel, true); 
    484                         serverBookModel.debugPrint(); 
    485  
    486                         final ResourceRefList curResources =  
    487                                 serverResourcesDirectory.getResources(); 
    488  
    489                         new AutoAction(Message.create(UPLOAD_RES_TO_SERVER, resourceRef,  
    490                                         serverResourcesDirectory.getRef()), true) { 
    491                                 @Override 
    492                                 public void performAuto() { 
    493                                         ResourceChanger dirChanger = getChanger(); 
    494                                         ResourceDirectoryH.addResource(dirChanger, resourceRef, 
    495                                                         serverBookModel, curResources); 
    496                                 } 
     458                        ResourceRefR4 userRef = UserH.getRelRefFromUsers(absUserRef); 
     459                        SecurityPermission othersPermissions = output.getPermissionLevel(); 
    497460 
    498                         }.register(directoryAccess); 
     461                        ResourceRefR4 absoluteRef = uploadToDirectory(serverResourcesDirectory, resourceRef, bookAccess,  
     462                                                                                                                                        connection, userRef, othersPermissions); 
    499463 
    500                         RevisionId lastRevId = directoryAccess.getHead().getId(); 
    501464                        // XXX: may be sync must be in open of server locator. 
     465                        RevisionId lastRevId = directoryAccess.getHead().getId(); 
    502466                        directoryAccess.syncToRemoteMaster(); 
    503467                        RevisionId curRevId = directoryAccess.getHead().getId(); 
    504468                        if (lastRevId != curRevId) { 
     
    506470                                manager.startUpload(absoluteRef); 
    507471                        } 
    508472 
    509                                 AppMainWindow mainWindow = AppViewUtil.findMainWindow(bookDocView); 
    510  
     473                        //Close current doc view and if needed open from server. 
     474                        AppMainWindow mainWindow = AppViewUtil.findMainWindow(bookDocView); 
    511475                        if (output.isStartEditingOnServer()) { 
    512476                                ResourceLocator locator = mainWindow.locator().get(); 
    513477                                AccessOptions options = bookAccess.getAccessOptions().modifyUser(userRef); 
    514                                 AccessOptions serverOptions = new ServerAccessOptions(options, sessionId); 
     478                                AccessOptions serverOptions = new ServerAccessOptions(options, connection.sessionId().get()); 
    515479                                StoredResourceAccess serverAccess =  
    516480                                        (StoredResourceAccess) locator.open(absoluteRef, serverOptions); 
    517481 
     
    520484                                mainWindow.documents().get().remove(bookDocView); 
    521485                                mainWindow.currentDocument().set(null); 
    522486                        } 
     487                         
     488                        //close the old access 
    523489                        bookAccess.close(); 
    524490 
     491                        //update resources palette (to add the new resource) 
    525492                        ServerResourcesPalette resourcesPalette =  
    526493                                connectionsPalette.findNearestElement(null, ServerResourcesPalette.class); 
    527  
    528                         updateResources(resourcesPalette, connectionsPalette, connection.account().get()); 
     494                        updateResources(resourcesPalette, connectionsPalette, account); 
    529495 
    530496                        return true; 
    531497                } 
    532  
    533498        }; 
    534499 
    535500        /** 
     
    588553 
    589554                assert mainWindow != null : "There is no main window??"; 
    590555                ServerAccessOptions options = new ServerAccessOptions( 
    591                                 AccessOptions.DEFAULT_ACCESS_OPTIONS, cacheKey.getSessionId()); 
     556                                AccessOptions.DEFAULT_ACCESS_OPTIONS.modifyViewId(), cacheKey.getSessionId()); 
    592557                ResourceRefR4 bookref = cacheKey.getRef(); 
    593558                ResourceAccess bookAccess = mainWindow.locator().get().open(bookref, options); 
    594559 
     
    695660                return null; 
    696661        } 
    697662 
     663        /** 
     664         * Helper method that adds changes security properties of a book and adds it  
     665         * to a given server directory.   
     666         *  
     667         * @param serverResourcesDirectory 
     668         *                      The main server directory for resources.  
     669         * @param resourceRef 
     670         *                      The ref of the new resource in the directory. 
     671         * @param bookAccess 
     672         *                      The access of the book to upload. 
     673         * @param connection 
     674         *                      The connection to the server to upload by.       
     675         * @param userRef 
     676         *                      The user that uploads the book. 
     677         * @param othersPermission 
     678         *                      The permission level of the default group of users.  
     679         * @return 
     680         *                      Absolute {@link ResourceRefR4}   
     681         */ 
     682        public static ResourceRefR4 uploadToDirectory( 
     683                        ResourceDirectoryH serverResourcesDirectory, final ResourceRefR4 resourceRef, 
     684                        ResourceAccess bookAccess, ServerConnection connection,  
     685                        final ResourceRefR4 userRef, final SecurityPermission othersPermission) { 
     686                ResourceAccess directoryAccess = serverResourcesDirectory.getAccess(); 
     687                 
     688                new AutoAction(Message.create("Setting up the access permissions"), true) { 
     689 
     690                        @Override 
     691                        public void performAuto() { 
     692                                //Start at empty map every time you upload a book 
     693                                ImmMap<ResourceRefR4, SecurityPermission> permissions =  
     694                                        ImmTreeMap.<ResourceRefR4, SecurityPermission>empty() 
     695                                        .put(userRef, SecurityPermission.WRITE); 
     696                                if (SecurityPermission.NONE != othersPermission) { 
     697                                        permissions = permissions.put(UserGroupR4.DEF_GROUP_REF, othersPermission); 
     698                                } 
     699                                getChanger().setRaw(ResourceR4.KEY_SECURITY, permissions); 
     700                        } 
     701 
     702                }.register(bookAccess); 
     703 
     704                ResourceModel bookModel = bookAccess.getHead().getModel(); 
     705                ResourceRefR4 absoluteRef = serverResourcesDirectory.getRef().sub(resourceRef); 
     706                String sessionId = connection.sessionId().get(); 
     707                final ResourceModel serverBookModel = FacadeBinDataUtil.convertBinDatasToFacade( 
     708                                connection.getFacade(), absoluteRef, sessionId, bookModel, true); 
     709                serverBookModel.debugPrint(); 
     710 
     711                final ResourceRefList curResources = serverResourcesDirectory.getResources(); 
     712 
     713                new AutoAction(Message.create(UPLOAD_RES_TO_SERVER, resourceRef,  
     714                                serverResourcesDirectory.getRef()), true) { 
     715                        @Override 
     716                        public void performAuto() { 
     717                                ResourceChanger dirChanger = getChanger(); 
     718                                ResourceDirectoryH.addResource(dirChanger, resourceRef, 
     719                                                serverBookModel, curResources); 
     720                        } 
     721 
     722                }.register(directoryAccess); 
     723                 
     724                return absoluteRef; 
     725        } 
    698726} 
    699727 
  • modules/org.sophie2.server.webui/src/main/resources/jsps/resource_directory.jspx

     
    2525                <form id="upload" action="${request.contextPath}/upload_resource" 
    2626                 enctype="multipart/form-data" 
    2727                 method="post"> 
    28                         <input type="file" name="resourceFile"/> 
    29                         <input type="submit" value="Upload" /> 
     28                        <div class="formContainer"> 
     29                                <input type="file" name="resourceFile"/> 
     30                                <input type="submit" value="Upload" /> 
     31                                <input type="radio" name="permission" value="noRights" checked="checked">No rights</input> 
     32                                <input type="radio" name="permission" value="readRights">Read rights</input> 
     33                                <input type="radio" name="permission" value="writeRights">Read and Write rights</input> 
     34                        </div> 
    3035                </form> 
    3136        </s2w:template> 
    3237</jsp:root> 
     38 No newline at end of file