Codeigniter:TinyMCE图像管理器动态图像路径

时间:2012-11-25 00:27:33

标签: php codeigniter tinymce

我已将TinyMCE安装到我的codeigniter构建中,并且我已经包含了图像管理器。

在图像管理器插件(保存在public / assets文件夹中)中有一个php配置文件,用于定义图像&文件路径常量。

define('DIR_IMAGES', 'images/path/here'); etc

我遇到的问题是我需要路径是动态的,这取决于数据库中的某些数据,例如template_name,但我不知道如何将正确的文件包含到配置文件中,以便我可以查看动态信息。 / p>

因此,如果用户保存了template_name,那么我需要路径为

define('DIR_IMAGES', $template_name.'images/path/here');

我还在core / MY_Controller.php中的常量中定义了template_name,所以如果我可以访问该变量比查询数据库更容易,但任何一种方法都可以。

有人可以帮我一把,非常感谢!

2 个答案:

答案 0 :(得分:2)

我只是定制了tinymce图像,但没有使用TinyMCE图像管理器。

但我使用以下链接中的教程。

How-to implement a custom file browser

<!-- Start tinymce custom -->
<script type="text/javascript">
 tinyMCE.init({

  <!-- 
      your tiny mce init here 
   --->


   <!-- custom file browser callback -->
   file_browser_callback : 'myFileBrowser',
 });

function myFileBrowser (field_name, url, type, win) {
  // this is your dynamic image path
  var cmsURL = "<?php echo base_url() ?>admin/media/select_image";  <== you can set as you wish
if (cmsURL.indexOf("?") < 0) {
  //add the type as the only query parameter
  cmsURL = cmsURL + "?type=" + type;
   }
else {
  //add the type as an additional query parameter
   // (PHP session ID is now included if there is one at all)
cmsURL = cmsURL + "&type=" + type;
}

   tinyMCE.activeEditor.windowManager.open({
file : cmsURL
,width : 600
,height : 600
,resizable : "yes"
,inline : "yes"
,close_previous : "yes"
,popup_css : true // Disable TinyMCE's default popup CSS
}, {
window : win,
input : field_name
});
return false;
}
</script>

答案 1 :(得分:0)

在你的tinymce元素中添加一个“data-”属性,并从那里回显你想要的url。然后在tinymce activeEditor中,访问该数据属性值。

textarea的

<textarea name="description" class="tinymceDescription" data-uploadLink="<?php echo DIR_IMAGES; ?>" ></textarea>

TinyMCE的

tinymce.init({
    // other settings here


    //either use this if you are uploading automatically.
    images_upload_url: $(tinymce.activeEditor.targetElm).attr("data-uploadLink"),


    //or use this if you want to override tinymce auto upload.
    images_upload_handler: function (blobInfo, success, failure) {
        var xhr, formData;

        var uploadLink = $(tinymce.activeEditor.targetElm).attr("data-uploadLink");

        xhr = new XMLHttpRequest();
        xhr.withCredentials = false;
        xhr.open('POST', uploadLink);

        xhr.onload = function () {
            var json;

            if (xhr.status != 200) {
                failure('HTTP Error: ' + xhr.status);
                return;
            }

            json = JSON.parse(xhr.responseText);

            if (!json || typeof json.location != 'string') {
                failure(xhr.responseText);
                return;
            }

            success(json.location);
        };

        formData = new FormData();
        formData.append('file', blobInfo.blob(), blobInfo.filename());

        xhr.send(formData);
    }
});

这里的重点是向您展示我如何从当前选择的tinymce实例获得动态上传URL。您上传的方式是您的选择,我希望您知道如何处理。但以太方式,我提供了自动和自定义示例。