Search in sources :

Example 1 with RevisionListController

use of org.olat.core.commons.modules.bc.version.RevisionListController in project OpenOLAT by OpenOLAT.

the class FileUploadController method askToReduceRevisionList.

private void askToReduceRevisionList(UserRequest ureq, Versionable versionable) {
    removeAsListenerAndDispose(revisionListCtr);
    removeAsListenerAndDispose(revisionListDialogBox);
    Versions versions = versionable.getVersions();
    int maxNumOfRevisions = getMaxNumOfRevisionsOfExistingVFSItem();
    String[] params = new String[] { Integer.toString(maxNumOfRevisions), Integer.toString(versions.getRevisions().size()) };
    String title = translate("ul.tooManyRevisions.title", params);
    String description = translate("ul.tooManyRevisions.description", params);
    revisionListCtr = new RevisionListController(ureq, getWindowControl(), versionable, null, description, false);
    listenTo(revisionListCtr);
    revisionListDialogBox = new CloseableModalController(getWindowControl(), translate("delete"), revisionListCtr.getInitialComponent(), true, title);
    listenTo(revisionListDialogBox);
    revisionListDialogBox.activate();
}
Also used : Versions(org.olat.core.util.vfs.version.Versions) CloseableModalController(org.olat.core.gui.control.generic.closablewrapper.CloseableModalController) RevisionListController(org.olat.core.commons.modules.bc.version.RevisionListController)

Example 2 with RevisionListController

use of org.olat.core.commons.modules.bc.version.RevisionListController in project OpenOLAT by OpenOLAT.

the class FileCopyController method event.

@Override
public void event(UserRequest ureq, Controller source, Event event) {
    if (source instanceof FileLinkChooserController) {
        if (event == Event.DONE_EVENT || event == Event.CANCELLED_EVENT) {
            fireEvent(ureq, FolderCommand.FOLDERCOMMAND_FINISHED);
        } else if (event instanceof URLChoosenEvent) {
            URLChoosenEvent choosenEvent = (URLChoosenEvent) event;
            String url = choosenEvent.getURL();
            if (url.indexOf("://") < 0) {
                VFSContainer cContainer = folderComponent.getExternContainerForCopy();
                VFSItem item = cContainer.resolve(url);
                if (item instanceof VFSLeaf) {
                    sourceLeaf = (VFSLeaf) item;
                    String filename = sourceLeaf.getName();
                    VFSContainer tContainer = folderComponent.getCurrentContainer();
                    newFile = tContainer.createChildLeaf(filename);
                    if (newFile == null) {
                        existingVFSItem = (VFSLeaf) tContainer.resolve(filename);
                        fileAlreadyExists(ureq);
                    } else {
                        finishUpload(ureq);
                    }
                } else {
                    fireEvent(ureq, FolderCommand.FOLDERCOMMAND_FINISHED);
                }
            } else {
                fireEvent(ureq, FolderCommand.FOLDERCOMMAND_FINISHED);
            }
        }
    } else if (source == overwriteDialog) {
        if (event instanceof ButtonClickedEvent) {
            ButtonClickedEvent buttonClickedEvent = (ButtonClickedEvent) event;
            if (buttonClickedEvent.getPosition() == 0) {
                // ok
                if (existingVFSItem instanceof Versionable && ((Versionable) existingVFSItem).getVersions().isVersioned()) {
                    // new version
                    String relPath = null;
                    if (existingVFSItem instanceof OlatRootFileImpl) {
                        relPath = ((OlatRootFileImpl) existingVFSItem).getRelPath();
                    }
                    int maxNumOfRevisions = FolderConfig.versionsAllowed(relPath);
                    if (maxNumOfRevisions == 0) {
                        // someone play with the configuration
                        // Overwrite...
                        String fileName = existingVFSItem.getName();
                        existingVFSItem.delete();
                        newFile = folderComponent.getCurrentContainer().createChildLeaf(fileName);
                        // ... and notify listeners.
                        finishUpload(ureq);
                    } else {
                        removeAsListenerAndDispose(commentVersionCtr);
                        boolean locked = vfsLockManager.isLocked(existingVFSItem);
                        commentVersionCtr = new VersionCommentController(ureq, getWindowControl(), locked, true);
                        listenTo(commentVersionCtr);
                        removeAsListenerAndDispose(commentVersionDialogBox);
                        commentVersionDialogBox = new CloseableModalController(getWindowControl(), translate("save"), commentVersionCtr.getInitialComponent());
                        listenTo(commentVersionDialogBox);
                        commentVersionDialogBox.activate();
                    }
                } else {
                    // if the file is locked, ask for unlocking it
                    if (vfsLockManager.isLocked(existingVFSItem)) {
                        removeAsListenerAndDispose(unlockCtr);
                        unlockCtr = new VersionCommentController(ureq, getWindowControl(), true, false);
                        listenTo(unlockCtr);
                        removeAsListenerAndDispose(unlockDialogBox);
                        unlockDialogBox = new CloseableModalController(getWindowControl(), translate("ok"), unlockCtr.getInitialComponent());
                        listenTo(unlockDialogBox);
                        unlockDialogBox.activate();
                    } else {
                        // Overwrite...
                        String fileName = existingVFSItem.getName();
                        existingVFSItem.delete();
                        newFile = folderComponent.getCurrentContainer().createChildLeaf(fileName);
                        // ... and notify listeners.
                        finishUpload(ureq);
                    }
                }
            } else if (buttonClickedEvent.getPosition() == 1) {
                // not ok
                // make newFile with the proposition of filename
                newFile = folderComponent.getCurrentContainer().createChildLeaf(renamedFilename);
                // ... and notify listeners.
                finishUpload(ureq);
            } else if (buttonClickedEvent.getPosition() == 2) {
            // cancel
            // cancel -> do nothing
            } else {
                throw new RuntimeException("Unknown button number " + buttonClickedEvent.getPosition());
            }
        }
    } else if (source == lockedFileDialog) {
        if (event instanceof ButtonClickedEvent) {
            ButtonClickedEvent buttonClickedEvent = (ButtonClickedEvent) event;
            switch(buttonClickedEvent.getPosition()) {
                case 0:
                    {
                        // ... and notify listeners.
                        newFile = existingVFSItem;
                        finishUpload(ureq);
                        break;
                    }
                case 1:
                    {
                        // cancel
                        fireEvent(ureq, FolderCommand.FOLDERCOMMAND_FINISHED);
                        break;
                    }
                default:
                    throw new RuntimeException("Unknown button number " + buttonClickedEvent.getPosition());
            }
        }
    } else if (source == commentVersionCtr) {
        String comment = commentVersionCtr.getComment();
        Roles roles = ureq.getUserSession().getRoles();
        boolean locked = vfsLockManager.isLocked(existingVFSItem);
        if (locked && !commentVersionCtr.keepLocked()) {
            vfsLockManager.unlock(existingVFSItem, getIdentity(), roles);
        }
        commentVersionDialogBox.deactivate();
        if (revisionListDialogBox != null) {
            revisionListDialogBox.deactivate();
        }
        // ok, new version of the file
        Versionable existingVersionableItem = (Versionable) existingVFSItem;
        boolean ok = existingVersionableItem.getVersions().addVersion(ureq.getIdentity(), comment, sourceLeaf.getInputStream());
        if (ok) {
            newFile = existingVFSItem;
        }
        finishSuccessfullUpload(existingVFSItem.getName(), ureq);
    } else if (source == unlockCtr) {
        // Overwrite...
        if (!unlockCtr.keepLocked()) {
            vfsLockManager.unlock(existingVFSItem, getIdentity(), ureq.getUserSession().getRoles());
        }
        unlockDialogBox.deactivate();
        newFile = existingVFSItem;
        // ... and notify listeners.
        finishSuccessfullUpload(existingVFSItem.getName(), ureq);
    } else if (source == revisionListCtr) {
        if (FolderCommandStatus.STATUS_CANCELED == revisionListCtr.getStatus()) {
            revisionListDialogBox.deactivate();
            // don't want to delete revisions
            fireEvent(ureq, FolderCommand.FOLDERCOMMAND_FINISHED);
        } else {
            if (existingVFSItem instanceof Versionable && ((Versionable) existingVFSItem).getVersions().isVersioned()) {
                revisionListDialogBox.deactivate();
                Versionable versionable = (Versionable) existingVFSItem;
                Versions versions = versionable.getVersions();
                int maxNumOfRevisions = FolderConfig.versionsAllowed(null);
                if (maxNumOfRevisions < 0 || maxNumOfRevisions > versions.getRevisions().size()) {
                    removeAsListenerAndDispose(commentVersionCtr);
                    boolean locked = vfsLockManager.isLocked(existingVFSItem);
                    commentVersionCtr = new VersionCommentController(ureq, getWindowControl(), locked, true);
                    listenTo(commentVersionCtr);
                    removeAsListenerAndDispose(commentVersionDialogBox);
                    commentVersionDialogBox = new CloseableModalController(getWindowControl(), translate("save"), commentVersionCtr.getInitialComponent());
                    listenTo(commentVersionDialogBox);
                    commentVersionDialogBox.activate();
                } else {
                    removeAsListenerAndDispose(revisionListCtr);
                    revisionListCtr = new RevisionListController(ureq, getWindowControl(), versionable, false);
                    listenTo(revisionListCtr);
                    removeAsListenerAndDispose(revisionListDialogBox);
                    revisionListDialogBox = new CloseableModalController(getWindowControl(), translate("delete"), revisionListCtr.getInitialComponent());
                    listenTo(revisionListDialogBox);
                    revisionListDialogBox.activate();
                }
            }
        }
    }
}
Also used : ButtonClickedEvent(org.olat.core.gui.control.generic.modal.ButtonClickedEvent) FileLinkChooserController(org.olat.core.commons.controllers.linkchooser.FileLinkChooserController) VFSLeaf(org.olat.core.util.vfs.VFSLeaf) CloseableModalController(org.olat.core.gui.control.generic.closablewrapper.CloseableModalController) VFSContainer(org.olat.core.util.vfs.VFSContainer) VFSItem(org.olat.core.util.vfs.VFSItem) Roles(org.olat.core.id.Roles) OlatRootFileImpl(org.olat.core.commons.modules.bc.vfs.OlatRootFileImpl) RevisionListController(org.olat.core.commons.modules.bc.version.RevisionListController) Versionable(org.olat.core.util.vfs.version.Versionable) VersionCommentController(org.olat.core.commons.modules.bc.version.VersionCommentController) Versions(org.olat.core.util.vfs.version.Versions) URLChoosenEvent(org.olat.core.commons.controllers.linkchooser.URLChoosenEvent)

Example 3 with RevisionListController

use of org.olat.core.commons.modules.bc.version.RevisionListController in project OpenOLAT by OpenOLAT.

the class FileCopyController method fileAlreadyExists.

private void fileAlreadyExists(UserRequest ureq) {
    renamedFilename = proposedRenamedFilename(existingVFSItem);
    boolean locked = vfsLockManager.isLockedForMe(existingVFSItem, getIdentity(), ureq.getUserSession().getRoles());
    if (locked) {
        // the file is locked and cannot be overwritten
        removeAsListenerAndDispose(lockedFileDialog);
        lockedFileDialog = DialogBoxUIFactory.createGenericDialog(ureq, getWindowControl(), translate("ul.lockedFile.title"), translate("ul.lockedFile.text", new String[] { existingVFSItem.getName(), renamedFilename }), asList(translate("ul.overwrite.threeoptions.rename", renamedFilename), translate("ul.overwrite.threeoptions.cancel")));
        listenTo(lockedFileDialog);
        lockedFileDialog.activate();
    } else if (existingVFSItem instanceof Versionable && ((Versionable) existingVFSItem).getVersions().isVersioned()) {
        Versionable versionable = (Versionable) existingVFSItem;
        Versions versions = versionable.getVersions();
        String relPath = null;
        if (existingVFSItem instanceof OlatRootFileImpl) {
            relPath = ((OlatRootFileImpl) existingVFSItem).getRelPath();
        }
        int maxNumOfRevisions = FolderConfig.versionsAllowed(relPath);
        if (maxNumOfRevisions == 0) {
            // it's possible if someone change the configuration
            // let calling method decide what to do.
            removeAsListenerAndDispose(overwriteDialog);
            overwriteDialog = DialogBoxUIFactory.createGenericDialog(ureq, getWindowControl(), translate("ul.overwrite.threeoptions.title"), translate("ul.overwrite.threeoptions.text", new String[] { existingVFSItem.getName(), renamedFilename }), asList(translate("ul.overwrite.threeoptions.overwrite"), translate("ul.overwrite.threeoptions.rename", renamedFilename), translate("ul.overwrite.threeoptions.cancel")));
            listenTo(overwriteDialog);
            overwriteDialog.activate();
        } else if (versions.getRevisions().isEmpty() || maxNumOfRevisions < 0 || maxNumOfRevisions > versions.getRevisions().size()) {
            // let calling method decide what to do.
            removeAsListenerAndDispose(overwriteDialog);
            overwriteDialog = DialogBoxUIFactory.createGenericDialog(ureq, getWindowControl(), translate("ul.overwrite.threeoptions.title"), translate("ul.versionoroverwrite", new String[] { existingVFSItem.getName(), renamedFilename }), asList(translate("ul.overwrite.threeoptions.newVersion"), translate("ul.overwrite.threeoptions.rename", renamedFilename), translate("ul.overwrite.threeoptions.cancel")));
            listenTo(overwriteDialog);
            overwriteDialog.activate();
        } else {
            String title = translate("ul.tooManyRevisions.title", new String[] { Integer.toString(maxNumOfRevisions), Integer.toString(versions.getRevisions().size()) });
            String description = translate("ul.tooManyRevisions.description", new String[] { Integer.toString(maxNumOfRevisions), Integer.toString(versions.getRevisions().size()) });
            removeAsListenerAndDispose(revisionListCtr);
            revisionListCtr = new RevisionListController(ureq, getWindowControl(), versionable, null, description, false);
            listenTo(revisionListCtr);
            removeAsListenerAndDispose(revisionListDialogBox);
            revisionListDialogBox = new CloseableModalController(getWindowControl(), translate("delete"), revisionListCtr.getInitialComponent(), true, title);
            listenTo(revisionListDialogBox);
            revisionListDialogBox.activate();
        }
    } else {
        // let calling method decide what to do.
        // for this, we put a list with "existing name" and "new name"
        overwriteDialog = DialogBoxUIFactory.createGenericDialog(ureq, getWindowControl(), translate("ul.overwrite.threeoptions.title"), translate("ul.overwrite.threeoptions.text", new String[] { existingVFSItem.getName(), renamedFilename }), asList(translate("ul.overwrite.threeoptions.overwrite"), translate("ul.overwrite.threeoptions.rename", renamedFilename), translate("ul.overwrite.threeoptions.cancel")));
        listenTo(overwriteDialog);
        overwriteDialog.activate();
    }
}
Also used : Versionable(org.olat.core.util.vfs.version.Versionable) Versions(org.olat.core.util.vfs.version.Versions) CloseableModalController(org.olat.core.gui.control.generic.closablewrapper.CloseableModalController) OlatRootFileImpl(org.olat.core.commons.modules.bc.vfs.OlatRootFileImpl) RevisionListController(org.olat.core.commons.modules.bc.version.RevisionListController)

Example 4 with RevisionListController

use of org.olat.core.commons.modules.bc.version.RevisionListController in project openolat by klemens.

the class FileCopyController method fileAlreadyExists.

private void fileAlreadyExists(UserRequest ureq) {
    renamedFilename = proposedRenamedFilename(existingVFSItem);
    boolean locked = vfsLockManager.isLockedForMe(existingVFSItem, getIdentity(), ureq.getUserSession().getRoles());
    if (locked) {
        // the file is locked and cannot be overwritten
        removeAsListenerAndDispose(lockedFileDialog);
        lockedFileDialog = DialogBoxUIFactory.createGenericDialog(ureq, getWindowControl(), translate("ul.lockedFile.title"), translate("ul.lockedFile.text", new String[] { existingVFSItem.getName(), renamedFilename }), asList(translate("ul.overwrite.threeoptions.rename", renamedFilename), translate("ul.overwrite.threeoptions.cancel")));
        listenTo(lockedFileDialog);
        lockedFileDialog.activate();
    } else if (existingVFSItem instanceof Versionable && ((Versionable) existingVFSItem).getVersions().isVersioned()) {
        Versionable versionable = (Versionable) existingVFSItem;
        Versions versions = versionable.getVersions();
        String relPath = null;
        if (existingVFSItem instanceof OlatRootFileImpl) {
            relPath = ((OlatRootFileImpl) existingVFSItem).getRelPath();
        }
        int maxNumOfRevisions = FolderConfig.versionsAllowed(relPath);
        if (maxNumOfRevisions == 0) {
            // it's possible if someone change the configuration
            // let calling method decide what to do.
            removeAsListenerAndDispose(overwriteDialog);
            overwriteDialog = DialogBoxUIFactory.createGenericDialog(ureq, getWindowControl(), translate("ul.overwrite.threeoptions.title"), translate("ul.overwrite.threeoptions.text", new String[] { existingVFSItem.getName(), renamedFilename }), asList(translate("ul.overwrite.threeoptions.overwrite"), translate("ul.overwrite.threeoptions.rename", renamedFilename), translate("ul.overwrite.threeoptions.cancel")));
            listenTo(overwriteDialog);
            overwriteDialog.activate();
        } else if (versions.getRevisions().isEmpty() || maxNumOfRevisions < 0 || maxNumOfRevisions > versions.getRevisions().size()) {
            // let calling method decide what to do.
            removeAsListenerAndDispose(overwriteDialog);
            overwriteDialog = DialogBoxUIFactory.createGenericDialog(ureq, getWindowControl(), translate("ul.overwrite.threeoptions.title"), translate("ul.versionoroverwrite", new String[] { existingVFSItem.getName(), renamedFilename }), asList(translate("ul.overwrite.threeoptions.newVersion"), translate("ul.overwrite.threeoptions.rename", renamedFilename), translate("ul.overwrite.threeoptions.cancel")));
            listenTo(overwriteDialog);
            overwriteDialog.activate();
        } else {
            String title = translate("ul.tooManyRevisions.title", new String[] { Integer.toString(maxNumOfRevisions), Integer.toString(versions.getRevisions().size()) });
            String description = translate("ul.tooManyRevisions.description", new String[] { Integer.toString(maxNumOfRevisions), Integer.toString(versions.getRevisions().size()) });
            removeAsListenerAndDispose(revisionListCtr);
            revisionListCtr = new RevisionListController(ureq, getWindowControl(), versionable, null, description, false);
            listenTo(revisionListCtr);
            removeAsListenerAndDispose(revisionListDialogBox);
            revisionListDialogBox = new CloseableModalController(getWindowControl(), translate("delete"), revisionListCtr.getInitialComponent(), true, title);
            listenTo(revisionListDialogBox);
            revisionListDialogBox.activate();
        }
    } else {
        // let calling method decide what to do.
        // for this, we put a list with "existing name" and "new name"
        overwriteDialog = DialogBoxUIFactory.createGenericDialog(ureq, getWindowControl(), translate("ul.overwrite.threeoptions.title"), translate("ul.overwrite.threeoptions.text", new String[] { existingVFSItem.getName(), renamedFilename }), asList(translate("ul.overwrite.threeoptions.overwrite"), translate("ul.overwrite.threeoptions.rename", renamedFilename), translate("ul.overwrite.threeoptions.cancel")));
        listenTo(overwriteDialog);
        overwriteDialog.activate();
    }
}
Also used : Versionable(org.olat.core.util.vfs.version.Versionable) Versions(org.olat.core.util.vfs.version.Versions) CloseableModalController(org.olat.core.gui.control.generic.closablewrapper.CloseableModalController) OlatRootFileImpl(org.olat.core.commons.modules.bc.vfs.OlatRootFileImpl) RevisionListController(org.olat.core.commons.modules.bc.version.RevisionListController)

Example 5 with RevisionListController

use of org.olat.core.commons.modules.bc.version.RevisionListController in project openolat by klemens.

the class FileUploadController method askToReduceRevisionList.

private void askToReduceRevisionList(UserRequest ureq, Versionable versionable) {
    removeAsListenerAndDispose(revisionListCtr);
    removeAsListenerAndDispose(revisionListDialogBox);
    Versions versions = versionable.getVersions();
    int maxNumOfRevisions = getMaxNumOfRevisionsOfExistingVFSItem();
    String[] params = new String[] { Integer.toString(maxNumOfRevisions), Integer.toString(versions.getRevisions().size()) };
    String title = translate("ul.tooManyRevisions.title", params);
    String description = translate("ul.tooManyRevisions.description", params);
    revisionListCtr = new RevisionListController(ureq, getWindowControl(), versionable, null, description, false);
    listenTo(revisionListCtr);
    revisionListDialogBox = new CloseableModalController(getWindowControl(), translate("delete"), revisionListCtr.getInitialComponent(), true, title);
    listenTo(revisionListDialogBox);
    revisionListDialogBox.activate();
}
Also used : Versions(org.olat.core.util.vfs.version.Versions) CloseableModalController(org.olat.core.gui.control.generic.closablewrapper.CloseableModalController) RevisionListController(org.olat.core.commons.modules.bc.version.RevisionListController)

Aggregations

RevisionListController (org.olat.core.commons.modules.bc.version.RevisionListController)8 CloseableModalController (org.olat.core.gui.control.generic.closablewrapper.CloseableModalController)6 Versionable (org.olat.core.util.vfs.version.Versionable)6 Versions (org.olat.core.util.vfs.version.Versions)6 OlatRootFileImpl (org.olat.core.commons.modules.bc.vfs.OlatRootFileImpl)4 FileLinkChooserController (org.olat.core.commons.controllers.linkchooser.FileLinkChooserController)2 URLChoosenEvent (org.olat.core.commons.controllers.linkchooser.URLChoosenEvent)2 VersionCommentController (org.olat.core.commons.modules.bc.version.VersionCommentController)2 ButtonClickedEvent (org.olat.core.gui.control.generic.modal.ButtonClickedEvent)2 Roles (org.olat.core.id.Roles)2 VFSContainer (org.olat.core.util.vfs.VFSContainer)2 VFSItem (org.olat.core.util.vfs.VFSItem)2 VFSLeaf (org.olat.core.util.vfs.VFSLeaf)2