We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 39131
    • 84 Posts
    I'm using MODX Revolution 2.3.3 and Redactor 1.5.3.

    The media-source I'm using for adding images with Redactor is using this settings:

    base-Path assets/images/
    basePathRelative yes
    base-Url assets/images/
    baseUrlRelative yes

    Redactor settings:

    redactor.file_browse_path: assets/images
    redactor.file_upload_path: redactor/
    redactor.image_browse_path: /
    redactor.image_upload_path: /
    redactor.mediasource is referring to Redactor mediasource.

    With the settings as mentioned above the files can be added in the manager. The output path is:
    <img src="/site-name/assets/images/filename.jpg" alt="file-name">
    .
    On my Macbook this is working fine and the images are shown normally.

    The first part of the file-name is giving problems when uploading this site to Modxcloud. The requested URL looks like
    http://site-name.mewolari.modxcloud.com/site-name/assets/images/filename.jpg


    That file is not found because the path is not correct. The second "site-name" is invalid and should be removed.

    The other media sources (when not added with Redactor) used on this site are working fine.

    Adding new files in the manager in modxcloud is working fine.

    http://nmldesign.mewolari.modxcloud.com/index.php?id=22

    Picture in left column in added when site was already on modxcloud, picture in right column was added on Macbook.

    Any ideas why paths are not working normally?

    Thanks in advance!




    This question has been answered by markh. See the first response.

    • discuss.answer
      • 18373 ☆ A M B ☆
      • 3,141 Posts
      I just responded to your ticket (sorry it took so long) with a really long explanation of what I think is happening there, but to share the gist of it here as well - basically Redactor returns the image url including the base url, which in this case included the /site-name/ part because the local site was in a folder called /site-name/. This reference was then copied across to the cloud, which of course doesn't work because it is not in a subdirectory.

      We've got some workarounds (see your email) but are trying to come up with smarter ways of dealing with things like this in the future.
        Mark Hamstra • Developer spending his days working on Premium Extras and a MODX Site Dashboard with the ability to remotely upgrade MODX and extras to make the MODX world a little better.

        Tweet me @mark_hamstra, check my infrequent blog at markhamstra.com, my slightly more frequent ramblings at MODX.today or see code at Github.
        • 39131
        • 84 Posts
        Thanks Mark for your answer.

        Below the email Mark sent me. Sorry guys, only Dutch smiley

        De reden waarom het met afbeeldingen die eerder zijn geupload niet werkt, en met afbeeldingen die je nu upload wel goed gaat, heeft te maken met de base url. Dit is kort door de bocht de subfolder waarin MODX is geïnstalleerd. Omdat we met de media sources API werken, krijgen we daar de volledige URL (inclusief de base url) van terug. Dus als je op je localhost, waar MODX in een mapje /nmldesign/ staat, een bestand upload, dan zit /nmldesign/ in de link die we terugkrijgen.

        Als je vervolgens de site verplaatst naar een plek naar de root van een domein (zoals op MODX cloud), dan werkt dat dus inderdaad niet meer.. maar nieuwe plaatjes die je upload hebben die map weer niet.

        De technische reden dat we de volledige url gebruiken komt omdat de editor direct in de pagina zit (als contenteditable veld). Met een relatieve link (in plaats van "/nmldesign/assets/uploads/.." simpelweg "assets/uploads/...") werkt dan niet, omdat de browser dat dan leest als "manager/assets/uploads". Sommige andere editors zoals TinyMCE zitten in een iframe, en zetten daarbinnen een <base> url zodat relatieve links wel werken. En image TVs tonen afbeeldingen met relatieve links volgens via phpthumb, iets wat we met Redactor niet kunnen doen.

        Dit is een vrij vervelend probleem waar we recentelijk meer mee te maken hebben gehad, en ik hoop dat we in de komende v2 een betere oplossing kunnen bedenken om dit te voorkomen. We zijn aan het experimenteren met bijvoorbeeld het dynamisch toevoegen van een <base> url in de manager, in de hoop dat relatieve links dan ook werken.

        Om het op dit moment op te lossen zou je kunnen proberen om iframe mode aan te zetten (en dan met name lokaal, omdat het probleem daar gecreëerd wordt), en in je media source configuratie de "baseUrlRelative" optie uit te zetten. Op dat moment worden afbeeldingen die je upload als het goed is zonder base url terug gegeven, en zijn ze dus relatief zodat je ze makkelijker op verschillende sites kunt zien. Aan iframe mode kleven wel een paar nadelen, waaronder dat het in v2 niet meer ondersteund is, maar tegen die tijd is er hopelijk een betere oplossing.

        Een andere oplossing, die mogelijk iets ingrijpender is maar wel gegarandeerd werkt, is om op je lokale ontwikkelomgeving niet met subfolders te werken, maar in plaats daarvan met echte top level domeinen. Bijvoorbeeld nmldesign.loc of nmldesign.dev of nmldesign.projects.dev. Op die manier is de base url altijd gelijk (simpelweg de root: /) en loop je ook niet tegen dit probleem op.

        Om afbeeldingen die al last hebben van deze subfolder te fixen zou je met de volgende SQL query op je modx database een heel eind moeten komen (na het maken van een backup uiteraard): UPDATE modx_site_content SET content = replace(content, 'src="/nmldesign/assets', 'src="assets');
        Op dat moment zijn all verwijzingen veranderd, maar dan moet je dus wel een van de eerder genoemde oplossingen gedaan hebben om de afbeeldingen juist te kunnen tonen met een relatieve link.