Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Disable TinyMCE absolute to relative URL Conversions

Tags:

tinymce

plone

Can anyone tell me how to get TinyMCE to stop converting my URLs to relative links in Plone?

For example, if I enter this in the HTML source:

<img src="/images/dir/subdir/my_image.png" /> 

it will convert it to:

<img src="../../../my_image.png" /> 

I've edited tiny_mce.js (in portal_skins) to set:

convert_urls:false, relative_urls:false, 

but to no effect. I've read all similar posts here, but none really answer this question.

It's fine if it does the relative thing when users are picking images by browsing the filesystem (i.e. the catalog). I just want it to respect what I type in the html box ... so that I have the option of forcing an absolute path if I deem it appropriate. This is the standard behavior in kupu.

Any ideas?

like image 833
jdeluca Avatar asked Mar 04 '11 16:03

jdeluca


1 Answers

Set convert_urls: false in tiny_mce_init.js, not tiny_mce.js. Early in tiny_mce_init.js you'll see a call to window.tinyMCE.init passing a bunch of initialisation options. In the Products.TinyMCE I'm looking at, the last option is fix_list_elements: false. Add your option there.

Edit: tiny_mce_init.js is no longer used in Products.TinyMCE 1.3.x (Plone 4.3). Instead, override the tinymce-jsonconfiguration browser view, e.g.:

Assuming you have a package with a browser layer, add in browser/configure.zcml:

<browser:page     for="*"     name="tinymce-jsonconfiguration"     class=".tinymce.TinyMCEBrowserView"     permission="zope2.View"     attribute="jsonConfiguration"     layer="..interfaces.IMyBrowserLayer"     /> 

Then add browser/tinymce.py:

try:     import simplejson as json except ImportError:     import json  from Acquisition import aq_inner from Products.CMFCore.utils import getToolByName from Products.TinyMCE.browser.browser import TinyMCEBrowserView as View from Products.TinyMCE.browser.interfaces.browser import ITinyMCEBrowserView from zope.interface import implements   class TinyMCEBrowserView(View):     implements(ITinyMCEBrowserView)      def jsonConfiguration(self, field):         """Return the configuration in JSON"""          utility = getToolByName(aq_inner(self.context), 'portal_tinymce')         config = utility.getConfiguration(context=self.context,                                           field=field,                                           request=self.request)         config['convert_urls'] = False         return json.dumps(config) 
like image 142
Dan Jacka Avatar answered Sep 21 '22 06:09

Dan Jacka