将自定义参数发送到TinyMCE编辑器中的图像管理器
我需要根据各种场景设置图像管理器的路径和根路径。将自定义参数发送到TinyMCE编辑器中的图像管理器
同一用户可以使用图像管理器从不同页面上传图像。我想从客户端发送一个参数来表示场景。例如,如果用户在主页中使用编辑器,则发送回家;同样,如果使用联系我们页面发送联系人。我所能做的就是在init中设置客户端的根路径。例如,imagemanager_rootpath:“test”。但是我的路径是根据我发送的参数在服务器端进行计算的。有没有办法做到这一点。
从我理解你的问题,你有两个选择:
1:从服务器上的模板生成JavaScript(说使用Smarty的或同等学历),并插入正确的根路径到TinyMCE的初始化代码。
所以,在直PHP,你可能最终得到这样的:
<?php
$root_path = get_root_path();
?>
// Other javascript goes here
tinymceInstance = tinyMce.init({
//parameters
imagemanager_rootpath: "<?php echo $root_path ?>"
});
2:生成一个包含所有你想要的Javascript有参数的JavaScript参数文件,然后初始化时使用此tinyMCE实例。
参数文件:
<?php
echo "window.serverParameters = ".json_encode(array("imageRoot" => get_root_path()));
?>
HTML:
<html>
<head>
<script src="serverParameters.php" type="text/javascript" />
</head>
</html>
的Javascript:
tinymceInstance = tinyMce.init({
//parameters
imagemanager_rootpath: window.serverParameters.imageRoot
});
希望帮助!
目前,我找不到一个更好的方法来做到这一点。我最终创建了一个帮助器方法,它接受一个指示资源类型的参数并确定根路径并设置Session [“imagemanager.filesystem.rootpath”] =“someRootPath”。在用编辑器返回视图的控制器中,我调用了这个辅助方法。这有几个缺点。其中之一是,无论您使用图像管理器,辅助方法都会被称为upfront。我最初的做法是在点击图片管理器后设置路径。因此,如果视图中的编辑器不使用图像管理器,则不要调用帮助器方法。这样做的第二个缺点是,如果您有多个编辑人员在相同的视图上,但他们需要上传到不同的位置;这不可能。所有编辑器在会话中使用相同的根路径集。同样,更好的方法是将每个编辑器的值发送到服务器并设置根路径。使用多个位置的一种方法是使用magemanager_rootpath:“someRootPath”获取所有位置并将它们设置在tinyMce编辑器的init()中。 然而,这样做的一个好处是,如果你的视图使用多个编辑器,并且它们都在该视图中使用相同的位置,那么辅助方法只会被调用一次,而不是多次使用原始方法。 因此,我将Skurrier的回答标为正确,但如果您找到更好的方法,请发表评论。
我确实尝试了两个选项。我不得不重复很多代码。这几乎类似于做Session [“imagemanager.filesystem.rootpath”] =“”;在我使用编辑器的每个页面上。有时候,页面在同一页面上有多个编辑器,他们需要上传到不同的位置。如果我可以在tinyMce.init()中设置自定义参数并在服务器端接收它,那将会很好。目前我正在使用第二个选项,但不是使用js参数,而是在会话中设置根路径。 –
2012-08-09 13:36:37