【问题标题】:Send custom parameters to image manager in TinyMCE editor在 TinyMCE 编辑器中将自定义参数发送到图像管理器
【发布时间】:2012-08-07 19:57:53
【问题描述】:

我需要根据各种场景设置图片管理器的路径和根路径。

同一用户可以使用图片管理器从不同页面上传图片。我想从客户端发送一个参数来指示场景。例如,如果用户在主页使用编辑器,则发送 home;同样,如果在联系我们页面中使用,请发送联系方式。我所能做的就是在初始化期间在客户端设置根路径。例如,imagemanager_rootpath: "test"。但是我的路径是根据我发送的参数在服务器端计算的。有没有办法做到这一点。

【问题讨论】:

    标签: tinymce url-parameters mcimagemanager


    【解决方案1】:

    根据我对您的问题的了解,您有两种选择:

    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"] = "";在我使用编辑器的每个页面上。有时页面在同一页面上有多个编辑器,他们需要上传到不同的位置。如果我可以在 tinyMce.init() 中设置自定义参数并在服务器端接收它,那就太好了。我目前使用的是第二个选项,但是我在会话中设置了根路径,而不是 js 参数。
    【解决方案2】:

    目前,我找不到更好的方法来做到这一点。我最终创建了一个辅助方法,该方法接受一个指示资源类型的参数并确定根路径并设置 Session["imagemanager.filesystem.rootpath"] = "someRootPath"。在使用编辑器返回视图的控制器中,我调用了这个辅助方法。这几乎没有缺点。一是无论您是否使用图像管理器,都会预先调用辅助方法。我最初的方法是在单击图像管理器后设置路径。因此,如果视图中的编辑器不使用图像管理器,请不要调用辅助方法。这样做的第二个缺点是,如果您在同一个视图上有多个编辑器,但他们需要上传到不同的位置;这是不可能的。所有编辑器都使用会话中设置的相同根路径。同样,更好的方法是从每个编辑器向服务器发送一个值并设置根路径。使用多个位置的一种方法是获取所有位置并使用 magemanager_rootpath:“someRootPath”在 tinyMce 编辑器的 init() 中设置它们。 然而,这样做的一个好处是,如果您的视图使用多个编辑器并且它们都使用该视图中的相同位置,则辅助方法仅被调用一次,而不是使用原始方法多次调用。 因此,我将 Skurrier 的答案标记为正确,但如果您找到更好的方法,请离开 cmets。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 2018-03-23
      • 1970-01-01
      • 2012-06-30
      相关资源
      最近更新 更多