Skip to content

Commit 9bbaad6

Browse files
authored
Merge pull request #3329 from magento-trigger/MAGETWO-95532
[trigger] MAGETWO-95532: Unable to upload image from TinyMCE3
2 parents 1f6e546 + 9986ec8 commit 9bbaad6

File tree

8 files changed

+140
-3
lines changed

8 files changed

+140
-3
lines changed

app/code/Magento/Cms/Model/Wysiwyg/Config.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,6 @@ class Config extends \Magento\Framework\DataObject implements ConfigInterface
8989

9090
/**
9191
* @var array
92-
* @deprecated
93-
* @see \Magento\Cms\Model\Wysiwyg\Gallery\DefaultConfigProvider
9492
*/
9593
protected $_windowSize;
9694

@@ -207,6 +205,12 @@ public function getConfig($data = [])
207205

208206
if ($this->_authorization->isAllowed('Magento_Cms::media_gallery')) {
209207
$this->configProvider->processGalleryConfig($config);
208+
$config->addData(
209+
[
210+
'files_browser_window_width' => $this->_windowSize['width'],
211+
'files_browser_window_height' => $this->_windowSize['height'],
212+
]
213+
);
210214
}
211215
if ($config->getData('add_widgets')) {
212216
$this->configProvider->processWidgetConfig($config);

app/code/Magento/Cms/Test/Mftf/Section/TinyMCESection.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,18 @@
3434
</section>
3535
<section name="MediaGallerySection">
3636
<element name="Browse" type="button" selector=".mce-i-browse"/>
37+
<element name="browseForImage" type="button" selector="//*[@id='srcbrowser']"/>
3738
<element name="BrowseUploadImage" type="file" selector=".fileupload" />
3839
<element name="image" type="text" selector="//small[text()='{{var1}}']" parameterized="true"/>
3940
<element name="imageOrImageCopy" type="text" selector="//div[contains(@class,'media-gallery-modal')]//img[contains(@alt, '{{arg1}}.{{arg2}}')]|//img[contains(@alt,'{{arg1}}_') and contains(@alt,'.{{arg2}}')]" parameterized="true"/>
4041
<element name="imageSelected" type="text" selector="//small[text()='{{var1}}']/parent::*[@class='filecnt selected']" parameterized="true"/>
4142
<element name="ImageSource" type="input" selector=".mce-combobox.mce-abs-layout-item.mce-last.mce-has-open" />
4243
<element name="ImageDescription" type="input" selector=".mce-textbox.mce-abs-layout-item.mce-last" />
44+
<element name="ImageDescriptionTinyMCE3" type="input" selector="#alt" />
4345
<element name="Height" type="input" selector=".mce-textbox.mce-abs-layout-item.mce-first" />
4446
<element name="UploadImage" type="file" selector=".fileupload" />
4547
<element name="OkBtn" type="button" selector="//span[text()='Ok']"/>
48+
<element name="insertBtn" type="button" selector="#insert"/>
4649
<element name="InsertFile" type="text" selector="#insert_files"/>
4750
<element name="CreateFolder" type="button" selector="#new_folder" />
4851
<element name="DeleteSelectedBtn" type="text" selector="#delete_files"/>
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
11+
<test name="AdminAddImageToCMSPageTinyMCE3Test">
12+
<annotations>
13+
<features value="Cms"/>
14+
<stories value="Admin should be able to upload images with TinyMCE3 WYSIWYG"/>
15+
<group value="Cms"/>
16+
<title value="Verify that admin is able to upload image to a CMS Page with TinyMCE3 enabled"/>
17+
<description value="Verify that admin is able to upload image to CMS Page with TinyMCE3 enabled"/>
18+
<severity value="MAJOR"/>
19+
<testCaseId value="MAGETWO-95725"/>
20+
</annotations>
21+
<before>
22+
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
23+
<actionGroup ref="EnabledWYSIWYG" stepKey="enableWYSIWYG"/>
24+
<!-- Choose TinyMCE3 as the default WYSIWYG editor-->
25+
<actionGroup ref="SwitchToTinyMCE3" stepKey="switchToTinyMCE3"/>
26+
</before>
27+
<after>
28+
<!-- Switch WYSIWYG editor to TinyMCE4-->
29+
<comment userInput="Reset editor as TinyMCE4" stepKey="chooseTinyMCE4AsEditor"/>
30+
<actionGroup ref="SwitchToVersion4ActionGroup" stepKey="switchToTinyMCE4"/>
31+
<actionGroup ref="logout" stepKey="logout"/>
32+
</after>
33+
<amOnPage url="{{CmsNewPagePage.url}}" stepKey="navigateToPage2"/>
34+
<waitForPageLoad stepKey="wait5"/>
35+
<fillField selector="{{CmsNewPagePageBasicFieldsSection.pageTitle}}" userInput="{{_defaultCmsPage.title}}" stepKey="fillFieldTitle2"/>
36+
<click selector="{{CmsNewPagePageContentSection.header}}" stepKey="clickContentTab2" />
37+
<waitForElementVisible selector="{{TinyMCESection.TinyMCE3}}" stepKey="waitForTinyMCE3"/>
38+
<seeElement selector="{{TinyMCESection.TinyMCE3}}" stepKey="seeTinyMCE3" />
39+
<comment userInput="Click Insert image button" stepKey="clickImageButton"/>
40+
<click selector="{{TinyMCESection.InsertImageBtnTinyMCE3}}" stepKey="clickInsertImage" />
41+
<waitForPageLoad stepKey="waitForiFrameToLoad" />
42+
<!-- Switch to the Edit/Insert Image iFrame -->
43+
<comment userInput="Switching to iFrame" stepKey="insertImageiFrame"/>
44+
<executeJS function="document.querySelector('.clearlooks2 iframe').setAttribute('name', 'insert-image');" stepKey="makeIFrameInteractable"/>
45+
<switchToIFrame selector="insert-image" stepKey="switchToIFrame"/>
46+
<click selector="{{MediaGallerySection.browseForImage}}" stepKey="clickBrowse"/>
47+
<switchToIFrame stepKey="switchOutOfIFrame"/>
48+
<waitForPageLoad stepKey="waitForPageToLoad" />
49+
<actionGroup ref="CreateImageFolder" stepKey="CreateImageFolder">
50+
<argument name="ImageFolder" value="ImageFolder"/>
51+
</actionGroup>
52+
<actionGroup ref="attachImage" stepKey="attachImage1">
53+
<argument name="Image" value="ImageUpload"/>
54+
</actionGroup>
55+
<actionGroup ref="saveImage" stepKey="insertImage"/>
56+
<!-- Switching back to the Edit/Insert Image iFrame-->
57+
<comment userInput="switching back to iFrame" stepKey="switchBackToIFrame"/>
58+
<executeJS function="document.querySelector('.clearlooks2 iframe').setAttribute('name', 'insert-image');" stepKey="makeIFrameInteractable2"/>
59+
<switchToIFrame selector="insert-image" stepKey="switchToIFrame2"/>
60+
<waitForElementVisible selector="{{MediaGallerySection.insertBtn}}" stepKey="waitForInsertBtnOnIFrame" />
61+
<fillField selector="{{MediaGallerySection.ImageDescriptionTinyMCE3}}" userInput="{{ImageUpload.content}}" stepKey="fillImageDescription" />
62+
<click selector="{{MediaGallerySection.insertBtn}}" stepKey="clickInsertBtn" />
63+
<waitForPageLoad stepKey="wait3"/>
64+
<click selector="{{CmsNewPagePageActionsSection.expandSplitButton}}" stepKey="expandButtonMenu"/>
65+
<waitForElementVisible selector="{{CmsNewPagePageActionsSection.splitButtonMenu}}" stepKey="waitForSplitButtonMenuVisible"/>
66+
<click selector="{{CmsNewPagePageActionsSection.savePage}}" stepKey="clickSavePage"/>
67+
<see userInput="You saved the page." stepKey="seeSuccessMessage"/>
68+
</test>
69+
</tests>

app/code/Magento/Config/Test/Mftf/ActionGroup/ConfigWYSIWYGActionGroup.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,16 @@
1919
<click selector="{{ContentManagementSection.WYSIWYGOptions}}" stepKey="collapseWYSIWYGOptions" />
2020
<click selector="{{ContentManagementSection.Save}}" stepKey="saveConfig" />
2121
</actionGroup>
22+
<actionGroup name="SwitchToTinyMCE3">
23+
<comment userInput="Choose TinyMCE3 as the default editor" stepKey="chooseTinyMCE3AsEditor"/>
24+
<conditionalClick stepKey="expandWYSIWYGOptions1" selector="{{ContentManagementSection.WYSIWYGOptions}}" dependentSelector="{{ContentManagementSection.CheckIfTabExpand}}" visible="true" />
25+
<waitForElementVisible selector="{{ContentManagementSection.SwitcherSystemValue}}" stepKey="waitForCheckbox2" />
26+
<uncheckOption selector="{{ContentManagementSection.SwitcherSystemValue}}" stepKey="uncheckUseSystemValue2"/>
27+
<waitForElementVisible selector="{{ContentManagementSection.Switcher}}" stepKey="waitForSwitcherDropdown2" />
28+
<selectOption selector="{{ContentManagementSection.Switcher}}" userInput="TinyMCE 3" stepKey="switchToVersion3" />
29+
<click selector="{{ContentManagementSection.WYSIWYGOptions}}" stepKey="collapseWYSIWYGOptions" />
30+
<click selector="{{ContentManagementSection.Save}}" stepKey="saveConfig" />
31+
</actionGroup>
2232
<actionGroup name="DisabledWYSIWYG">
2333
<amOnPage url="{{ConfigurationStoresPage.url}}" stepKey="navigateToConfigurationPage" />
2434
<waitForPageLoad stepKey="wait3"/>
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Tinymce3\Model\Config\Gallery;
9+
10+
/**
11+
* Class Config adds information about required configurations to display media gallery of tinymce3 editor
12+
*
13+
* @deprecated use \Magento\Cms\Model\Wysiwyg\DefaultConfigProvider instead
14+
*/
15+
class Config implements \Magento\Framework\Data\Wysiwyg\ConfigProviderInterface
16+
{
17+
/**
18+
* @var \Magento\Backend\Model\UrlInterface
19+
*/
20+
private $backendUrl;
21+
22+
/**
23+
* @param \Magento\Backend\Model\UrlInterface $backendUrl
24+
*/
25+
public function __construct(
26+
\Magento\Backend\Model\UrlInterface $backendUrl
27+
) {
28+
$this->backendUrl = $backendUrl;
29+
}
30+
31+
/**
32+
* Returns media gallery config
33+
*
34+
* @param \Magento\Framework\DataObject $config
35+
* @return \Magento\Framework\DataObject
36+
*/
37+
public function getConfig(\Magento\Framework\DataObject $config) : \Magento\Framework\DataObject
38+
{
39+
$config->addData(
40+
[
41+
'add_images' => true,
42+
'files_browser_window_url' => $this->backendUrl->getUrl('cms/wysiwyg_images/index'),
43+
]
44+
);
45+
46+
return $config;
47+
}
48+
}

app/code/Magento/Tinymce3/Test/Mftf/Section/AdminTinymce3FileldsSection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
</section>
1414
<section name="TinyMCESection">
1515
<element name="TinyMCE3" type="text" selector="#cms_page_form_content_tbl"/>
16+
<element name="InsertImageBtnTinyMCE3" type="button" selector="#cms_page_form_content_image"/>
1617
</section>
1718
<section name="NewsletterWYSIWYGSection">
1819
<element name="TinyMCE3" type="text" selector="#cms_page_form_content_tbl"/>

app/code/Magento/Tinymce3/composer.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
"require": {
55
"php": "~7.1.3||~7.2.0",
66
"magento/framework": "*",
7+
"magento/module-backend": "*",
78
"magento/module-ui": "*",
89
"magento/module-variable": "*",
910
"magento/module-widget": "*"
11+
1012
},
1113
"suggest": {
1214
"magento/module-cms": "*"

app/code/Magento/Tinymce3/etc/adminhtml/di.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<item name="Magento_Tinymce3/tinymce3Adapter" xsi:type="string">Magento\Tinymce3\Model\Config\Widget\Config</item>
2323
</argument>
2424
<argument name="galleryConfigProvider" xsi:type="array">
25-
<item name="Magento_Tinymce3/tinymce3Adapter" xsi:type="string">Magento\Cms\Model\WysiwygDefaultConfig</item>
25+
<item name="Magento_Tinymce3/tinymce3Adapter" xsi:type="string">Magento\Tinymce3\Model\Config\Gallery\Config</item>
2626
</argument>
2727
</arguments>
2828
</type>

0 commit comments

Comments
 (0)