RenameCommandExecutor.java

package cn.bluejoe.elfinder.controller.executors;

import cn.bluejoe.elfinder.controller.executor.AbstractJsonCommandExecutor;
import cn.bluejoe.elfinder.controller.executor.FsItemEx;
import cn.bluejoe.elfinder.service.FsService;
import org.json.JSONObject;
import sk.iway.iwcm.Constants;
import sk.iway.iwcm.Identity;
import sk.iway.iwcm.common.FileBrowserTools;
import sk.iway.iwcm.components.gallery.GalleryService;
import sk.iway.iwcm.i18n.Prop;
import sk.iway.iwcm.system.elfinder.IwcmFsVolume;
import sk.iway.iwcm.users.UsersDB;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

public class RenameCommandExecutor extends AbstractJsonCommandExecutor
{
	@Override
	public void execute(FsService fsService, HttpServletRequest request, ServletContext servletContext, JSONObject json)
			throws Exception
	{
		String target = request.getParameter("target");
		String name = request.getParameter("name");
		FsItemEx fsi = super.findItem(fsService, target);
		Prop prop = Prop.getInstance(request);

		if (FileBrowserTools.hasForbiddenSymbol(name)) {
			json.put("error", prop.getText("components.elfinder.commands.rename.error.banned_character"));
			return;
		}

		Identity user = sk.iway.iwcm.system.elfinder.FsService.getCurrentUser();
		if (user!=null && UsersDB.isFolderWritable(user.getWritableFolders(), fsi.getParent().getPath()))
		{
			// remove diacritics
			name = IwcmFsVolume.removeSpecialChars(name, fsi);

			FsItemEx dst = new FsItemEx(fsi.getParent(), name);

			//#20481 - po vystrihnuti/premenovani vytvori redirect
			if(PasteCommandExecutor.isAllowedFolder(fsi.getPath(), Constants.getString("elfinderRedirectFolders")))
				PasteCommandExecutor.createRedirect(fsi, fsi.getPath(), dst.getPath(), request);

			fsi.renameTo(dst);

			json.put("added", new Object[] { getFsItemInfo(request, dst) });
			json.put("removed", new String[] { target });

			//update gallery entity
			GalleryService.createOrUpdateGalleryEntity(fsi, dst);
		}
		else
		{
			json.put("error", prop.getText("components.elfinder.commands.rename.error", fsi.getParent().getPath()));
		}
	}
}