├── .github ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── AdobeStockAdminUi ├── Block │ └── Adminhtml │ │ └── System │ │ └── Config │ │ ├── HideAdminAdobeImsStatus.php │ │ └── TestConnection.php ├── Controller │ └── Adminhtml │ │ └── System │ │ └── Config │ │ └── TestConnection.php ├── LICENSE.txt ├── LICENSE_AFL.txt ├── README.md ├── Test │ ├── Mftf │ │ ├── ActionGroup │ │ │ ├── AdminAdobeStockSetConfigActionGroup.xml │ │ │ ├── AdminOpenAdobeStockConfigActionGroup.xml │ │ │ ├── AssertAdminAdobeStockConfigFieldsActionGroup.xml │ │ │ ├── AssertAdminAdobeStockConnectionTestActionGroup.xml │ │ │ └── AssertAdminFailedAuthenticationMessageActionGroup.xml │ │ ├── Page │ │ │ └── AdminConfigSystemPage.xml │ │ ├── Section │ │ │ └── AdminConfigSystemSection.xml │ │ ├── Test │ │ │ ├── AdminAdobeStockConfigTest.xml │ │ │ └── AdminCannotAccessStockImagesWithWrongCredentialsTest.xml │ │ ├── test-dependency-allowlist │ │ └── test-dependency-errors-detailed │ └── Unit │ │ └── Controller │ │ └── Adminhtml │ │ └── System │ │ └── Config │ │ └── TestConnectionTest.php ├── composer.json ├── etc │ ├── adminhtml │ │ ├── routes.xml │ │ └── system.xml │ └── module.xml ├── i18n │ └── en_US.csv ├── modman ├── registration.php └── view │ └── adminhtml │ ├── templates │ └── system │ │ └── config │ │ └── connection.phtml │ └── web │ ├── js │ └── connection.js │ └── template │ └── connection.html ├── AdobeStockAsset ├── LICENSE.txt ├── LICENSE_AFL.txt ├── Model │ ├── AppendAttributes.php │ ├── Asset.php │ ├── AssetRepository.php │ ├── Category.php │ ├── CategoryRepository.php │ ├── CategorySearchResults.php │ ├── Creator.php │ ├── CreatorRepository.php │ ├── CreatorSearchResults.php │ ├── GetAssetById.php │ ├── GetAssetList.php │ ├── ResourceModel │ │ ├── Asset.php │ │ ├── Asset │ │ │ ├── Collection.php │ │ │ └── Command │ │ │ │ ├── DeleteById.php │ │ │ │ ├── LoadById.php │ │ │ │ ├── LoadByIds.php │ │ │ │ └── Save.php │ │ ├── Category.php │ │ ├── Category │ │ │ ├── Collection.php │ │ │ └── Command │ │ │ │ ├── DeleteById.php │ │ │ │ ├── LoadById.php │ │ │ │ └── Save.php │ │ ├── Command │ │ │ └── InsertIgnore.php │ │ ├── Creator.php │ │ └── Creator │ │ │ ├── Collection.php │ │ │ └── Command │ │ │ ├── DeleteById.php │ │ │ ├── LoadById.php │ │ │ └── Save.php │ ├── SaveAsset.php │ └── SearchResults.php ├── README.md ├── Test │ ├── Api │ │ ├── AssetRepository │ │ │ ├── DeleteByIdTest.php │ │ │ ├── GetByIdTest.php │ │ │ └── GetListTest.php │ │ └── SearchAdobeStockTest.php │ ├── Integration │ │ └── Model │ │ │ ├── AssetRepositoryTest.php │ │ │ ├── CategoryRepositoryTest.php │ │ │ ├── ClientMock.php │ │ │ ├── CreatorRepositoryTest.php │ │ │ ├── GetAssetByIdTest.php │ │ │ ├── GetAssetListTest.php │ │ │ └── SaveAssetTest.php │ ├── Unit │ │ └── Model │ │ │ ├── CategoryRepositoryTest.php │ │ │ ├── CreatorRepositoryTest.php │ │ │ ├── GetAssetByIdTest.php │ │ │ ├── GetAssetListTest.php │ │ │ └── SaveAssetTest.php │ └── _files │ │ ├── asset.php │ │ ├── asset_rollback.php │ │ ├── category.php │ │ ├── category_rollback.php │ │ ├── creator.php │ │ ├── creator_rollback.php │ │ ├── media_asset.php │ │ └── media_asset_rollback.php ├── composer.json ├── etc │ ├── acl.xml │ ├── db_schema.xml │ ├── db_schema_whitelist.json │ ├── di.xml │ ├── module.xml │ └── webapi.xml ├── i18n │ └── en_US.csv ├── modman └── registration.php ├── AdobeStockAssetApi ├── Api │ ├── AssetRepositoryInterface.php │ ├── CategoryRepositoryInterface.php │ ├── CreatorRepositoryInterface.php │ ├── Data │ │ ├── AssetInterface.php │ │ ├── AssetSearchResultsInterface.php │ │ ├── CategoryInterface.php │ │ ├── CategorySearchResultsInterface.php │ │ ├── CreatorInterface.php │ │ └── CreatorSearchResultsInterface.php │ ├── GetAssetByIdInterface.php │ ├── GetAssetListInterface.php │ └── SaveAssetInterface.php ├── LICENSE.txt ├── LICENSE_AFL.txt ├── Model │ ├── Asset │ │ └── Command │ │ │ ├── DeleteByIdInterface.php │ │ │ ├── LoadByIdInterface.php │ │ │ ├── LoadByIdsInterface.php │ │ │ └── SaveInterface.php │ ├── Category │ │ └── Command │ │ │ ├── DeleteByIdInterface.php │ │ │ ├── LoadByIdInterface.php │ │ │ └── SaveInterface.php │ └── Creator │ │ └── Command │ │ ├── DeleteByIdInterface.php │ │ ├── LoadByIdInterface.php │ │ └── SaveInterface.php ├── README.md ├── composer.json ├── etc │ └── module.xml ├── modman └── registration.php ├── AdobeStockClient ├── LICENSE.txt ├── LICENSE_AFL.txt ├── Model │ ├── Client.php │ ├── Client │ │ └── Files.php │ ├── Config.php │ ├── ConnectionFactory.php │ ├── ConnectionWrapper.php │ ├── FilesRequestFactory.php │ ├── LicenseConfirmation.php │ ├── SearchParameterProviderInterface.php │ ├── SearchParametersProvider │ │ ├── ContentType.php │ │ ├── Isolated.php │ │ ├── MediaId.php │ │ ├── Offensive.php │ │ ├── Orientation.php │ │ ├── Pagination.php │ │ ├── Premium.php │ │ ├── Similar.php │ │ ├── SimpleFilters.php │ │ ├── Sorting.php │ │ └── Words.php │ ├── SearchParametersProviderComposite.php │ ├── StockFileToDocument.php │ └── UserQuota.php ├── README.md ├── Test │ ├── Integration │ │ └── Model │ │ │ ├── Client │ │ │ └── FilesTest.php │ │ │ └── ClientTest.php │ └── Unit │ │ └── Model │ │ ├── Client │ │ └── Files │ │ │ └── FilesTest.php │ │ ├── ClientTest.php │ │ ├── ConfigTest.php │ │ ├── ConnectionFactoryTest.php │ │ ├── ConnectionWrapperTest.php │ │ ├── SearchParametersProvider │ │ ├── ContentTypeTest.php │ │ ├── IsolatedTest.php │ │ ├── MediaIdTest.php │ │ ├── OffensiveTest.php │ │ ├── OrientationTest.php │ │ ├── PaginationTest.php │ │ ├── PremiumTest.php │ │ ├── SimilarTest.php │ │ ├── SimpleFiltersTest.php │ │ ├── SortingTest.php │ │ └── WordsTest.php │ │ ├── SearchParametersProviderCompositeTest.php │ │ └── StockFileToDocumentTest.php ├── composer.json ├── etc │ ├── config.xml │ ├── di.xml │ └── module.xml ├── i18n │ └── en_US.csv ├── modman └── registration.php ├── AdobeStockClientApi ├── Api │ ├── Client │ │ └── FilesInterface.php │ ├── ClientInterface.php │ ├── ConfigInterface.php │ └── Data │ │ ├── LicenseConfirmationInterface.php │ │ └── UserQuotaInterface.php ├── LICENSE.txt ├── LICENSE_AFL.txt ├── README.md ├── composer.json ├── etc │ └── module.xml ├── modman └── registration.php ├── AdobeStockImage ├── LICENSE.txt ├── LICENSE_AFL.txt ├── Model │ ├── Config.php │ ├── Extract │ │ ├── AdobeStockAsset.php │ │ ├── Keywords.php │ │ └── MediaGalleryAsset.php │ ├── GetImageList.php │ ├── GetRelatedImages.php │ ├── SaveImage.php │ ├── SaveImageFile.php │ ├── SaveKeywords.php │ ├── SaveLicensedImage.php │ ├── SaveMediaGalleryAsset.php │ ├── SerializeImage.php │ └── Storage │ │ └── Save.php ├── README.md ├── Test │ ├── Api │ │ └── SearchExecuteTest.php │ ├── Integration │ │ ├── Model │ │ │ ├── Extract │ │ │ │ └── DocumentToAssetTest.php │ │ │ ├── HttpsDriverMock.php │ │ │ └── SaveImageTest.php │ │ └── _files │ │ │ └── magento-logo.png │ ├── Mftf │ │ ├── Test │ │ │ └── StorefrontAdobeStockIntegrationApiSwaggerActionsExistTest.xml │ │ ├── test-dependency-allowlist │ │ └── test-dependency-errors-detailed │ └── Unit │ │ └── Model │ │ ├── GetImageListTest.php │ │ ├── GetRelatedImagesTest.php │ │ ├── SaveImageFileTest.php │ │ ├── SaveImageTest.php │ │ ├── SaveLicensedImageTest.php │ │ ├── SaveMediaGalleryAssetTest.php │ │ ├── SerializeImageTest.php │ │ └── Storage │ │ └── SaveTest.php ├── composer.json ├── etc │ ├── config.xml │ ├── di.xml │ ├── module.xml │ └── webapi.xml ├── i18n │ └── en_US.csv ├── modman └── registration.php ├── AdobeStockImageAdminUi ├── Controller │ └── Adminhtml │ │ ├── Asset │ │ └── GetMediaGalleryAsset.php │ │ ├── License │ │ ├── Confirmation.php │ │ ├── GetList.php │ │ ├── License.php │ │ ├── Quota.php │ │ └── SaveLicensed.php │ │ └── Preview │ │ ├── Download.php │ │ └── RelatedImages.php ├── LICENSE.txt ├── LICENSE_AFL.txt ├── Model │ ├── Asset │ │ └── GetMediaGalleryAssetByAdobeId.php │ ├── IsAdobeStockIntegrationEnabled.php │ ├── Listing │ │ └── DataProvider.php │ ├── SearchCriteria │ │ └── CollectionProcessor │ │ │ └── JoinProcessor │ │ │ └── IsLicensed.php │ └── SignInConfigProvider.php ├── Plugin │ ├── AddAdobeStockImageDetailsPlugin.php │ ├── AddAdobeStockSourceOptionPlugin.php │ └── AddSearchButton.php ├── README.md ├── Test │ ├── Mftf │ │ ├── ActionGroup │ │ │ ├── AdminAdobeStockApplyIsolatedFilterActionGroup.xml │ │ │ ├── AdminAdobeStockAssertFolderSelectedActionGroup.xml │ │ │ ├── AdminAdobeStockAssertUserLoggedActionGroup.xml │ │ │ ├── AdminAdobeStockAssertUserNotLoggedActionGroup.xml │ │ │ ├── AdminAdobeStockClickLicenseActionGroup.xml │ │ │ ├── AdminAdobeStockClickSignInActionGroup.xml │ │ │ ├── AdminAdobeStockClickSortActionGroup.xml │ │ │ ├── AdminAdobeStockCloseSearchModalActionGroup.xml │ │ │ ├── AdminAdobeStockExpandFiltersActionGroup.xml │ │ │ ├── AdminAdobeStockExpandImagePreviewActionGroup.xml │ │ │ ├── AdminAdobeStockExpandSpecifiedImagePreviewActionGroup.xml │ │ │ ├── AdminAdobeStockImageAssertLicenseButtonNotAvailableInMediaGalleryActionGroup.xml │ │ │ ├── AdminAdobeStockImagePreviewLocateActionGroup.xml │ │ │ ├── AdminAdobeStockImsConditionLogoutActionGroup.xml │ │ │ ├── AdminAdobeStockImsPopupClickSignInActionGroup.xml │ │ │ ├── AdminAdobeStockImsPopupSignInFillUserDataActionGroup.xml │ │ │ ├── AdminAdobeStockMediaGalleryClearFiltersActionGroup.xml │ │ │ ├── AdminAdobeStockMediaGallerySearchByKeywordActionGroup.xml │ │ │ ├── AdminAdobeStockModalClearAllFiltersActionGroup.xml │ │ │ ├── AdminAdobeStockOpenFromEnhancedMediaGalleryActionGroup.xml │ │ │ ├── AdminAdobeStockOpenNextPageActionGroup.xml │ │ │ ├── AdminAdobeStockOpenPanelFromMediaGalleryActionGroup.xml │ │ │ ├── AdminAdobeStockSaveLicensedActionGroup.xml │ │ │ ├── AdminAdobeStockSavePreviewActionGroup.xml │ │ │ ├── AdminAdobeStockSaveViewActionGroup.xml │ │ │ ├── AdminAdobeStockSignedInViewCreditsActionGroup.xml │ │ │ ├── AdminAdobeStockUserSignOutActionGroup.xml │ │ │ ├── AdminAdobeStockVerifyImageDetailsActionGroup.xml │ │ │ ├── AdminApplyColorFilterValueActionGroup.xml │ │ │ ├── AdminApplyNonValidColorValueToFilterActionGroup.xml │ │ │ ├── AdminDeleteSelectedAdobeStockImagePreviewActionGroup.xml │ │ │ ├── AdminEnhancedMediaGallerySearchAdobeStockActionGroup.xml │ │ │ ├── AdminFilterResultsActionGroup.xml │ │ │ ├── AdminImagePreviewKeywordSearchActionGroup.xml │ │ │ ├── AdminMediaGalleryDeleteImageActionGroup.xml │ │ │ ├── AdminNavigateToCreatedUserRoleActionGroup.xml │ │ │ ├── AdminSaveAdobeStockImagePreviewActionGroup.xml │ │ │ ├── AdminSaveAdobeStockImagePreviewAndDontCheckForErrorActionGroup.xml │ │ │ ├── AdminSaveAdobeStockLicensedImageActionGroup.xml │ │ │ ├── AdminSearchImagesOnModalActionGroup.xml │ │ │ ├── AdminUserApplySafeSearchFilterActionGroup.xml │ │ │ ├── AssertAdminAdobeStockCurrentPageNumberActionGroup.xml │ │ │ ├── AssertAdminAdobeStockFilterResultsActionGroup.xml │ │ │ ├── AssertAdminAdobeStockImageAssertLicenseButtonMediaGalleryActionGroup.xml │ │ │ ├── AssertAdminAdobeStockImageKeywordActionGroup.xml │ │ │ ├── AssertAdminAdobeStockImageNotFoundAfterSearchActionGroup.xml │ │ │ ├── AssertAdminAdobeStockImagePreviewAttributeVisibleActionGroup.xml │ │ │ ├── AssertAdminAdobeStockImageSavedActionGroup.xml │ │ │ ├── AssertAdminAdobeStockImageUnlicensedLabelActionGroup.xml │ │ │ ├── AssertAdminAdobeStockImagesNumberMoreForThisModelActionGroup.xml │ │ │ ├── AssertAdminAdobeStockImagesNumberMoreForThisSeriesActionGroup.xml │ │ │ ├── AssertAdminAdobeStockKeywordLocalizedActionGroup.xml │ │ │ ├── AssertAdminAdobeStockThumbnailsNumberActionGroup.xml │ │ │ ├── AssertAdminImageIsVisibleInMediaGalleryActionGroup.xml │ │ │ ├── AssertAdminIsVisibleAdobeStockFilterElementActionGroup.xml │ │ │ └── AssertAdminNumberOfKeywordsInAdobeStockImagePreviewActionGroup.xml │ │ ├── Data │ │ │ ├── AdobeStockConfigData.xml │ │ │ ├── AdobeStockCountPerPageData.xml │ │ │ ├── AdobeStockImageData.xml │ │ │ ├── AdobeStockLoginData.xml │ │ │ └── AdobeStockModalData.xml │ │ ├── LICENSE.txt │ │ ├── LICENSE_AFL.txt │ │ ├── README.md │ │ ├── Section │ │ │ ├── AdminAdobeStockFilterSection.xml │ │ │ ├── AdminAdobeStockImagePreviewSection.xml │ │ │ ├── AdminAdobeStockSaveImagePreviewSection.xml │ │ │ ├── AdminAdobeStockSection.xml │ │ │ ├── AdminEnhancedMediaGalleryActionsSection.xml │ │ │ ├── AdminEnhancedMediaGalleryImageActionsSection.xml │ │ │ ├── AdminEnhancedMediaGalleryImageSection.xml │ │ │ └── AdminEnhancedMediaGalleryViewDetailsSection.xml │ │ ├── Suite │ │ │ ├── AdobeStockIntegrationConfigurationSuite.xml │ │ │ ├── AdobeStockIntegrationImsMixedSuite.xml │ │ │ ├── AdobeStockIntegrationImsSignedSuite.xml │ │ │ ├── AdobeStockIntegrationSuite.xml │ │ │ ├── AdobeStockMediaGalleryImsSignedSuite.xml │ │ │ └── AdobeStockMediaGallerySuite.xml │ │ ├── Test │ │ │ ├── AdminAdobeStockACLTest.xml │ │ │ ├── AdminAdobeStockCheckAddSelectedButtonIsNotAvailableInMassDeleteModeTest.xml │ │ │ ├── AdminAdobeStockColorFilterTest.xml │ │ │ ├── AdminAdobeStockEnablesDisablesEnhancedMediaGalleryTest.xml │ │ │ ├── AdminAdobeStockGridBookmarksTest.xml │ │ │ ├── AdminAdobeStockGridFiltersTest.xml │ │ │ ├── AdminAdobeStockGridSortTest.xml │ │ │ ├── AdminAdobeStockGridTest.xml │ │ │ ├── AdminAdobeStockImagePreviewAttributesTest.xml │ │ │ ├── AdminAdobeStockImagePreviewKeywordsSearchTest.xml │ │ │ ├── AdminAdobeStockImagePreviewKeywordsTest.xml │ │ │ ├── AdminAdobeStockImagePreviewLocateTest.xml │ │ │ ├── AdminAdobeStockImagePreviewSameModelSeeMoreTest.xml │ │ │ ├── AdminAdobeStockImagePreviewSameModelTest.xml │ │ │ ├── AdminAdobeStockImagePreviewSameSeriesSeeMoreTest.xml │ │ │ ├── AdminAdobeStockImagePreviewSameSeriesTest.xml │ │ │ ├── AdminAdobeStockImageVerifyLicenseActionOnMediaGalleryTest.xml │ │ │ ├── AdminAdobeStockImagesPreviewNavigationTest.xml │ │ │ ├── AdminAdobeStockIncorrectSecretSignInTest.xml │ │ │ ├── AdminAdobeStockInsertRenditionImageFromGalleryFileSizeTest.xml │ │ │ ├── AdminAdobeStockIsolatedFilterTest.xml │ │ │ ├── AdminAdobeStockLicensedImageViewLabelTest.xml │ │ │ ├── AdminAdobeStockListingStateTest.xml │ │ │ ├── AdminAdobeStockLocalizationTest.xml │ │ │ ├── AdminAdobeStockMediaGalleryPaginationTest.xml │ │ │ ├── AdminAdobeStockNotLicensedImageLicenseTest.xml │ │ │ ├── AdminAdobeStockOrientationFilterTest.xml │ │ │ ├── AdminAdobeStockPageNumberTest.xml │ │ │ ├── AdminAdobeStockPanelTest.xml │ │ │ ├── AdminAdobeStockPriceFilterTest.xml │ │ │ ├── AdminAdobeStockSafeContentFilterTest.xml │ │ │ ├── AdminAdobeStockSaveLicenseWithSavedPreviewTest.xml │ │ │ ├── AdminAdobeStockSaveLicensedTest.xml │ │ │ ├── AdminAdobeStockSavePreviewTest.xml │ │ │ ├── AdminAdobeStockSavedLicensedImageLocateTest.xml │ │ │ ├── AdminAdobeStockSearchTest.xml │ │ │ ├── AdminAdobeStockSignInACLTest.xml │ │ │ ├── AdminAdobeStockSignInSignOutTest.xml │ │ │ ├── AdminAdobeStockSignedInCreditsVisibleTest.xml │ │ │ ├── AdminAdobeStockStandaloneMediaGalleryPaginationTest.xml │ │ │ ├── AdminAdobeStockStandaloneMediaGallerySavePreviewTest.xml │ │ │ ├── AdminAdobeStockTryLicenseAlreadyLicensedImageTest.xml │ │ │ ├── AdminAdobeStockTypeFilterTest.xml │ │ │ ├── AdminAdobeStockVerifyLicensedLabelTest.xml │ │ │ ├── AdminAdobeStockVerifyUnlicensedLabelTest.xml │ │ │ ├── AdminCanOpenOnlyOneAdobeSignInWindowTest.xml │ │ │ ├── AdminMediaGalleryCategorySavedPreviewAddSelectedTest.xml │ │ │ ├── AdminMediaGalleryPageSavedPreviewAddSelectedTest.xml │ │ │ ├── AdminMediaGalleryViewAdobeStockDetailsTest.xml │ │ │ ├── AdminSavesTheImagePreviewWithNewNameTest.xml │ │ │ ├── AdminSeeMoreFromSeriesTest.xml │ │ │ ├── AdminStandaloneMediaGallerySearchByKeywordTest.xml │ │ │ ├── AdminStandaloneMediaGalleryUnsuccessfulLicensingTest.xml │ │ │ ├── AdminStandaloneMediaGalleryViewAdobeStockDetailsTest.xml │ │ │ └── AdminViewsStockLicenseStatusTest.xml │ │ ├── class-file-naming-allowlist │ │ ├── test-dependency-allowlist │ │ └── test-dependency-errors-detailed │ └── Unit │ │ ├── Controller │ │ └── Adminhtml │ │ │ ├── License │ │ │ ├── ConfirmationTest.php │ │ │ ├── LicenseTest.php │ │ │ ├── QuotaTest.php │ │ │ └── SaveLicensedTest.php │ │ │ └── Preview │ │ │ ├── DownloadTest.php │ │ │ └── RelatedImagesTest.php │ │ ├── Model │ │ ├── Block │ │ │ └── Wysiwyg │ │ │ │ └── Images │ │ │ │ └── Content │ │ │ │ └── Plugin │ │ │ │ └── AddSearchButtonTest.php │ │ ├── IsAdobeStockIntegrationEnabledTest.php │ │ ├── Listing │ │ │ └── DataProviderTest.php │ │ └── SignInConfigProviderTest.php │ │ └── Ui │ │ └── Component │ │ └── Listing │ │ └── Filter │ │ └── ColorTest.php ├── Ui │ └── Component │ │ └── Listing │ │ ├── Columns │ │ ├── ContentType │ │ │ └── Options.php │ │ ├── Image.php │ │ ├── ImagePreview.php │ │ ├── Isolated │ │ │ └── Options.php │ │ ├── Licensed │ │ │ └── Options.php │ │ ├── LicensedOverlay.php │ │ ├── Offensive │ │ │ └── Options.php │ │ ├── Orientation │ │ │ └── Options.php │ │ ├── PremiumPrice │ │ │ └── Options.php │ │ └── UnlicensedOverlay.php │ │ ├── Filter │ │ ├── Checkbox.php │ │ ├── Color.php │ │ └── RelatedImages.php │ │ └── SearchAdobeStockButton.php ├── composer.json ├── etc │ ├── acl.xml │ ├── adminhtml │ │ ├── di.xml │ │ └── routes.xml │ ├── csp_whitelist.xml │ └── module.xml ├── i18n │ └── en_US.csv ├── modman ├── registration.php └── view │ └── adminhtml │ ├── layout │ ├── cms_wysiwyg_images_index.xml │ ├── media_gallery_index_index.xml │ └── media_gallery_media_index.xml │ ├── templates │ ├── image_details │ │ └── adobe_stock.phtml │ └── panel.phtml │ ├── ui_component │ ├── adobe_stock_images_listing.xml │ ├── media_gallery_listing.xml │ ├── standalone_adobe_stock_images_listing.xml │ └── standalone_media_gallery_listing.xml │ └── web │ ├── css │ └── source │ │ └── _module.less │ ├── js │ ├── action │ │ ├── confirmQuota.js │ │ ├── getLicenseStatus.js │ │ ├── licenseAndSave.js │ │ ├── save.js │ │ ├── saveLicensed.js │ │ └── savePreview.js │ ├── components │ │ ├── grid │ │ │ └── column │ │ │ │ ├── image-preview.js │ │ │ │ ├── overlay.js │ │ │ │ └── preview │ │ │ │ ├── actions.js │ │ │ │ ├── keywords.js │ │ │ │ └── related.js │ │ └── images-grid-sizes.js │ ├── confirmation │ │ ├── buyCredits.js │ │ ├── license.js │ │ ├── save.js │ │ └── saveLicensed.js │ ├── media-gallery.js │ ├── mediaGallery │ │ └── grid │ │ │ └── columns │ │ │ ├── image │ │ │ └── licenseActions.js │ │ │ └── licenseImage.js │ ├── panel.js │ ├── path-utility.js │ ├── signIn.js │ └── validation │ │ └── validate-image-name.js │ └── template │ ├── grid │ ├── column │ │ ├── image-preview.html │ │ ├── overlay.html │ │ └── preview │ │ │ ├── actions.html │ │ │ ├── keywords.html │ │ │ └── related.html │ ├── filter │ │ ├── checkbox.html │ │ ├── chips.html │ │ └── color.html │ └── toolbar.html │ ├── image │ └── adobe-stock-image-details.html │ ├── mediaGallery │ └── grid │ │ └── columns │ │ └── image │ │ └── licenseActions.html │ ├── modal │ └── adobe-modal-prompt-content.html │ ├── signIn.html │ └── sorting.html ├── AdobeStockImageApi ├── Api │ ├── ConfigInterface.php │ ├── GetImageListInterface.php │ ├── GetRelatedImagesInterface.php │ ├── SaveImageInterface.php │ └── SaveLicensedImageInterface.php ├── LICENSE.txt ├── LICENSE_AFL.txt ├── README.md ├── composer.json ├── etc │ └── module.xml ├── modman └── registration.php ├── CODE_OF_CONDUCT.md ├── COPYING.txt ├── LICENSE.txt ├── LICENSE_AFL.txt ├── README.md ├── _metapackage ├── LICENSE.txt ├── LICENSE_AFL.txt ├── README.md └── composer.json ├── dev └── tests │ ├── acceptance │ ├── .credentials │ └── .env │ └── js │ └── jasmine │ └── tests │ └── app │ └── code │ └── Magento │ └── AdobeStockImageAdminUi │ └── view │ └── adminhtml │ └── web │ └── js │ └── components │ └── grid │ └── column │ └── overlay.test.js └── modman /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Technical issue with the Adobe Stock Integration core components 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 14 | 15 | ### Preconditions (*) 16 | 19 | 1. 20 | 2. 21 | 22 | ### Steps to reproduce (*) 23 | 26 | 1. 27 | 2. 28 | 29 | ### Expected result (*) 30 | 31 | 1. [Screenshots, logs or description] 32 | 2. 33 | 34 | ### Actual result (*) 35 | 36 | 1. [Screenshots, logs or description] 37 | 2. 38 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | ### Description (*) 13 | 17 | 18 | ### Fixed Issues (if relevant) 19 | 23 | 1. Fixes magento/adobe-stock-integration#: Issue title 24 | 2. ... 25 | 26 | ### Manual testing scenarios (*) 27 | 31 | 1. ... 32 | 2. ... 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS Generated Files 2 | .DS_Store 3 | .vscode 4 | thumbs.db 5 | .idea/ 6 | -------------------------------------------------------------------------------- /AdobeStockAdminUi/Block/Adminhtml/System/Config/HideAdminAdobeImsStatus.php: -------------------------------------------------------------------------------- 1 | getHtmlId() . '"' . $style .'>' . $html . ''; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /AdobeStockAdminUi/README.md: -------------------------------------------------------------------------------- 1 | # Magento_AdobeStockAdminUi module 2 | 3 | The Magento_AdobeStockAdminUi module is responsible for the admin panel user interface (UI) implementation of the Adobe Stock integration. 4 | 5 | ## Extensibility 6 | 7 | Extension developers can interact with the Magento_AdobeStockAdminUi module. For more information about the Magento extension mechanism, see [Magento plug-ins](https://developer.adobe.com/commerce/php/development/components/plugins/). 8 | 9 | [The Magento dependency injection mechanism](https://developer.adobe.com/commerce/php/development/components/dependency-injection/) enables you to override the functionality of the Magento_AdobeStockAdminUi module. 10 | 11 | ## Additional information 12 | 13 | For information about significant changes in patch releases, see [2.3.x Release information](https://experienceleague.adobe.com/docs/commerce-operations/release/notes/overview.html). 14 | -------------------------------------------------------------------------------- /AdobeStockAdminUi/Test/Mftf/ActionGroup/AdminOpenAdobeStockConfigActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockAdminUi/Test/Mftf/ActionGroup/AssertAdminAdobeStockConfigFieldsActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /AdobeStockAdminUi/Test/Mftf/ActionGroup/AssertAdminAdobeStockConnectionTestActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AdobeStockAdminUi/Test/Mftf/ActionGroup/AssertAdminFailedAuthenticationMessageActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /AdobeStockAdminUi/Test/Mftf/Page/AdminConfigSystemPage.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 |
11 | 12 | -------------------------------------------------------------------------------- /AdobeStockAdminUi/Test/Mftf/Section/AdminConfigSystemSection.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 |
23 | -------------------------------------------------------------------------------- /AdobeStockAdminUi/Test/Mftf/test-dependency-allowlist: -------------------------------------------------------------------------------- 1 | AdminOpenMediaGalleryFromPageNoEditorActionGroup 2 | AdminAdobeStockOpenPanelFromMediaGalleryActionGroup 3 | AdobeStockConfigDataEnabled 4 | AdobeStockConfigDataApiKey 5 | AdobeStockConfigDataPrivateKey 6 | AdobeStockModalData 7 | AdminAdobeStockSection 8 | -------------------------------------------------------------------------------- /AdobeStockAdminUi/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "magento/module-adobe-stock-admin-ui", 3 | "description": "Magento module responsible for the admin panel UI implementation", 4 | "require": { 5 | "php": "~8.2.0||~8.3.0||~8.4.0", 6 | "magento/framework": "*", 7 | "magento/module-admin-adobe-ims": "*", 8 | "magento/module-adobe-ims-api": "*", 9 | "magento/module-adobe-stock-client-api": "*", 10 | "magento/module-backend": "*", 11 | "magento/module-config": "*" 12 | }, 13 | "suggest": { 14 | "magento/module-cms": "*" 15 | }, 16 | "type": "magento2-module", 17 | "license": [ 18 | "OSL-3.0", 19 | "AFL-3.0" 20 | ], 21 | "autoload": { 22 | "files": [ 23 | "registration.php" 24 | ], 25 | "psr-4": { 26 | "Magento\\AdobeStockAdminUi\\": "" 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /AdobeStockAdminUi/etc/adminhtml/routes.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /AdobeStockAdminUi/etc/module.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /AdobeStockAdminUi/i18n/en_US.csv: -------------------------------------------------------------------------------- 1 | button_label,button_label 2 | "Connection Successful!","Connection Successful!" 3 | "Connection Failed!","Connection Failed!" 4 | "An error occurred during test Adobe Stock API connection","An error occurred during test Adobe Stock API connection" 5 | "Configure an Adobe Stock account on the %io_link site to retrieve a Private key (Client secret).","Configure an Adobe Stock account on the %io_link site to retrieve a Private key (Client secret)." 6 | "Redirect URI: %redirect_uri","Redirect URI: %redirect_uri" 7 | "Pattern: %pattern","Pattern: %pattern" 8 | "Adobe Stock Integration","Adobe Stock Integration" 9 | "Enabled Adobe Stock","Enabled Adobe Stock" 10 | "API Key (Client ID)","API Key (Client ID)" 11 | "Client Secret","Client Secret" 12 | "Configure an Adobe Stock account on adobe.io to get the API Key (Client ID) and Client Secret. You will not be able to use the integration without both the API Key and Client Secret.","Configure an Adobe Stock account on adobe.io to get the API Key (Client ID) and Client Secret. You will not be able to use the integration without both the API Key and Client Secret." 13 | "Test Connection","Test Connection" 14 | -------------------------------------------------------------------------------- /AdobeStockAdminUi/modman: -------------------------------------------------------------------------------- 1 | ./ app/code/Magento/AdobeStockAdminUi -------------------------------------------------------------------------------- /AdobeStockAdminUi/registration.php: -------------------------------------------------------------------------------- 1 | 10 |
11 | 12 |
13 | 29 | -------------------------------------------------------------------------------- /AdobeStockAdminUi/view/adminhtml/web/template/connection.html: -------------------------------------------------------------------------------- 1 | 7 |
8 | 11 | -------------------------------------------------------------------------------- /AdobeStockAsset/Model/CategorySearchResults.php: -------------------------------------------------------------------------------- 1 | _init(self::ADOBE_STOCK_ASSET_TABLE_NAME, 'id'); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /AdobeStockAsset/Model/ResourceModel/Asset/Collection.php: -------------------------------------------------------------------------------- 1 | _init( 26 | Model::class, 27 | ResourceModel::class 28 | ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /AdobeStockAsset/Model/ResourceModel/Category.php: -------------------------------------------------------------------------------- 1 | _init(self::ADOBE_STOCK_ASSET_CATEGORY_TABLE_NAME, 'id'); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /AdobeStockAsset/Model/ResourceModel/Category/Collection.php: -------------------------------------------------------------------------------- 1 | _init( 26 | Model::class, 27 | ResourceModel::class 28 | ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /AdobeStockAsset/Model/ResourceModel/Creator.php: -------------------------------------------------------------------------------- 1 | _init(self::ADOBE_STOCK_ASSET_CREATOR_TABLE_NAME, 'id'); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /AdobeStockAsset/Model/ResourceModel/Creator/Collection.php: -------------------------------------------------------------------------------- 1 | _init( 26 | Model::class, 27 | ResourceModel::class 28 | ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /AdobeStockAsset/Model/SearchResults.php: -------------------------------------------------------------------------------- 1 | configure([ 26 | 'preferences' => [ 27 | ClientInterface::class => ClientMock::class 28 | ] 29 | ]); 30 | 31 | $this->getAssetById = Bootstrap::getObjectManager()->get(GetAssetByIdInterface::class); 32 | } 33 | 34 | public function testExecute(): void 35 | { 36 | /** @var DocumentInterface $searchResults */ 37 | $searchResults = $this->getAssetById->execute(1); 38 | 39 | $this->assertInstanceOf(DocumentInterface::class, $searchResults); 40 | $this->assertNotEmpty($searchResults); 41 | $this->assertEquals(1, $searchResults->getId()); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /AdobeStockAsset/Test/_files/asset.php: -------------------------------------------------------------------------------- 1 | get(GetAssetsByPathsInterface::class); 23 | $savedMediaAsset = $mediaGetByPath->execute(['some/path.jpg'])[0]; 24 | 25 | /** @var AssetInterfaceFactory $assetFactory */ 26 | $assetFactory = $objectManager->get(AssetInterfaceFactory::class); 27 | /** @var AssetInterface $asset */ 28 | $asset = $assetFactory->create( 29 | [ 30 | 'data' => [ 31 | 'id' => 1, 32 | 'is_licensed' => 1, 33 | 'category_id' => 42, 34 | 'creator_id' => 42, 35 | 'media_gallery_id' => $savedMediaAsset->getId() 36 | ] 37 | ] 38 | ); 39 | 40 | /** @var AssetRepositoryInterface $assetRepository */ 41 | $assetRepository = $objectManager->get(AssetRepositoryInterface::class); 42 | $assetRepository->save($asset); 43 | -------------------------------------------------------------------------------- /AdobeStockAsset/Test/_files/asset_rollback.php: -------------------------------------------------------------------------------- 1 | get(AssetRepositoryInterface::class); 18 | $assetRepositoryRepository->deleteById(1); 19 | -------------------------------------------------------------------------------- /AdobeStockAsset/Test/_files/category.php: -------------------------------------------------------------------------------- 1 | get(CategoryInterfaceFactory::class); 17 | /** @var CategoryInterface $category */ 18 | $category = $categoryFactory->create( 19 | [ 20 | 'data' => [ 21 | 'id' => 42, 22 | 'name' => 'Test category' 23 | ] 24 | ] 25 | ); 26 | /** @var CategoryRepositoryInterface $categoryRepository */ 27 | $categoryRepository = $objectManager->get(CategoryRepositoryInterface::class); 28 | $categoryRepository->save($category); 29 | -------------------------------------------------------------------------------- /AdobeStockAsset/Test/_files/category_rollback.php: -------------------------------------------------------------------------------- 1 | get(CategoryRepositoryInterface::class); 15 | $categoryRepository->deleteById(42); 16 | -------------------------------------------------------------------------------- /AdobeStockAsset/Test/_files/creator.php: -------------------------------------------------------------------------------- 1 | get(CreatorInterfaceFactory::class); 18 | /** @var CreatorInterface $creator */ 19 | $creator = $creatorFactory->create( 20 | [ 21 | 'data' => [ 22 | 'id' => 42, 23 | 'name' => 'Test creator' 24 | ] 25 | ] 26 | ); 27 | /** @var CreatorRepositoryInterface $creatorRepository */ 28 | $creatorRepository = $objectManager->get(CreatorRepositoryInterface::class); 29 | $creatorRepository->save($creator); 30 | -------------------------------------------------------------------------------- /AdobeStockAsset/Test/_files/creator_rollback.php: -------------------------------------------------------------------------------- 1 | get(CreatorRepositoryInterface::class); 15 | $creatorRepository->deleteById(42); 16 | -------------------------------------------------------------------------------- /AdobeStockAsset/Test/_files/media_asset.php: -------------------------------------------------------------------------------- 1 | get(MediaAssetFactory::class); 18 | $mediaAsset = $mediaAssetFactory->create( 19 | [ 20 | 'path' => 'some/path.jpg', 21 | 'title' => 'Web API test image', 22 | 'source' => 'Adobe Stock', 23 | 'contentType' => 'image/jpeg', 24 | 'width' => 6529, 25 | 'height' => 4355, 26 | 'size' => 424242 27 | ] 28 | ); 29 | /** @var SaveAssetsInterface $mediaSave */ 30 | $mediaSave = $objectManager->get(SaveAssetsInterface::class); 31 | $mediaSave->execute([$mediaAsset]); 32 | -------------------------------------------------------------------------------- /AdobeStockAsset/Test/_files/media_asset_rollback.php: -------------------------------------------------------------------------------- 1 | get(DeleteAssetsByPathsInterface::class); 15 | $deleteByPaths->execute(['some/path.jpg']); 16 | -------------------------------------------------------------------------------- /AdobeStockAsset/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "magento/module-adobe-stock-asset", 3 | "description": "Magento module responsible for the Adobe Stock assets handling implementation on Magento side", 4 | "require": { 5 | "php": "~8.2.0||~8.3.0||~8.4.0", 6 | "magento/framework": "*", 7 | "magento/module-adobe-stock-asset-api": "*", 8 | "magento/module-adobe-stock-client-api": "*", 9 | "magento/module-media-gallery-api": "*", 10 | "magento/module-media-gallery": "*", 11 | "magento/module-config": "*" 12 | }, 13 | "type": "magento2-module", 14 | "license": [ 15 | "OSL-3.0", 16 | "AFL-3.0" 17 | ], 18 | "autoload": { 19 | "files": [ 20 | "registration.php" 21 | ], 22 | "psr-4": { 23 | "Magento\\AdobeStockAsset\\": "" 24 | } 25 | }, 26 | "repositories": { 27 | "stock-api-libphp": { 28 | "type": "vcs", 29 | "url": "git@github.com:adobe/stock-api-libphp.git" 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /AdobeStockAsset/etc/acl.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /AdobeStockAsset/etc/db_schema_whitelist.json: -------------------------------------------------------------------------------- 1 | { 2 | "adobe_stock_asset": { 3 | "column": { 4 | "id": true, 5 | "media_gallery_id": true, 6 | "category_id": true, 7 | "creator_id": true, 8 | "is_licensed": true, 9 | "creation_date": true 10 | }, 11 | "index": { 12 | "ADOBE_STOCK_ASSET_ID": true, 13 | "ADOBE_STOCK_ASSET_CATEGORY_ID": true, 14 | "ADOBE_STOCK_ASSET_CREATOR_ID": true 15 | }, 16 | "constraint": { 17 | "PRIMARY": true, 18 | "ADOBE_STOCK_ASSET_CATEGORY_ID_ADOBE_STOCK_CATEGORY_ID": true, 19 | "ADOBE_STOCK_ASSET_CREATOR_ID_ADOBE_STOCK_CREATOR_ID": true, 20 | "ADOBE_STOCK_ASSET_MEDIA_GALLERY_ID_MEDIA_GALLERY_ASSET_ID": true 21 | } 22 | }, 23 | "adobe_stock_category": { 24 | "column": { 25 | "id": true, 26 | "name": true 27 | }, 28 | "index": { 29 | "ADOBE_STOCK_CATEGORY_ID": true 30 | }, 31 | "constraint": { 32 | "PRIMARY": true 33 | } 34 | }, 35 | "adobe_stock_creator": { 36 | "column": { 37 | "id": true, 38 | "name": true 39 | }, 40 | "index": { 41 | "ADOBE_STOCK_CREATOR_ID": true 42 | }, 43 | "constraint": { 44 | "PRIMARY": true 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /AdobeStockAsset/etc/module.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /AdobeStockAsset/etc/webapi.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /AdobeStockAsset/i18n/en_US.csv: -------------------------------------------------------------------------------- 1 | "An error occurred during get asset list: %error","An error occurred during get asset list: %error" 2 | "Adobe Stock asset with id %id does not exist.","Adobe Stock asset with id %id does not exist." 3 | "Requested image doesn't exists","Requested image doesn't exists" 4 | "Failed to authenticate to Adobe Stock API.
Please correct the API credentials in Configuration → System → Adobe Stock Integration.","Failed to authenticate to Adobe Stock API.
Please correct the API credentials in Configuration → System → Adobe Stock Integration." 5 | "Cannot retrieve assets from Adobe Stock.","Cannot retrieve assets from Adobe Stock." 6 | "Could not delete Adobe Stock asset with id %id: %error","Could not delete Adobe Stock asset with id %id: %error" 7 | "An error occurred during adobe stock asset save: %error","An error occurred during adobe stock asset save: %error" 8 | "Could not delete Adobe Stock asset category with id %id: %error","Could not delete Adobe Stock asset category with id %id: %error" 9 | "Adobe Stock asset category with id ""%1"" does not exist.","Adobe Stock asset category with id ""%1"" does not exist." 10 | "Could not delete Adobe Stock asset creator with id %id: %error","Could not delete Adobe Stock asset creator with id %id: %error" 11 | "Adobe Stock asset creator with id ""%1"" does not exist.","Adobe Stock asset creator with id ""%1"" does not exist." 12 | "Adobe Stock","Adobe Stock" 13 | Actions,Actions 14 | Delete,Delete 15 | Save,Save 16 | View,View 17 | Get,Get 18 | -------------------------------------------------------------------------------- /AdobeStockAsset/modman: -------------------------------------------------------------------------------- 1 | ./ app/code/Magento/AdobeStockAsset -------------------------------------------------------------------------------- /AdobeStockAsset/registration.php: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /AdobeStockAssetApi/modman: -------------------------------------------------------------------------------- 1 | ./ app/code/Magento/AdobeStockAssetApi -------------------------------------------------------------------------------- /AdobeStockAssetApi/registration.php: -------------------------------------------------------------------------------- 1 | getFilterGroups() as $filterGroup) { 29 | foreach ($filterGroup->getFilters() as $filter) { 30 | if ($filter->getField() === self::ISOLATED_FILTER && $filter->getValue() === self::ISOLATED_ONLY) { 31 | $searchParams->setFilterIsolatedOn(true); 32 | break; 33 | } 34 | } 35 | } 36 | return $searchParams; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /AdobeStockClient/Model/SearchParametersProvider/MediaId.php: -------------------------------------------------------------------------------- 1 | getFilterGroups() as $filterGroup) { 28 | foreach ($filterGroup->getFilters() as $filter) { 29 | if ($filter->getField() === self::MEDIA_ID) { 30 | $searchParams->setMediaId((int) $filter->getValue()); 31 | } 32 | } 33 | } 34 | 35 | return $searchParams; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /AdobeStockClient/Model/SearchParametersProvider/Offensive.php: -------------------------------------------------------------------------------- 1 | getFilterGroups() as $filterGroup) { 29 | foreach ($filterGroup->getFilters() as $filter) { 30 | if ($filter->getField() === self::OFFENSIVE_FILTER && $filter->getValue() === self::DISABLED) { 31 | $searchParams->setFilterOffensive2(true); 32 | break; 33 | } 34 | } 35 | } 36 | return $searchParams; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /AdobeStockClient/Model/SearchParametersProvider/Orientation.php: -------------------------------------------------------------------------------- 1 | getFilterGroups() as $filterGroup) { 29 | foreach ($filterGroup->getFilters() as $filter) { 30 | if ($filter->getField() === self::ORIENTATION_FILTER) { 31 | if ($filter->getValue() === self::PANORAMIC) { 32 | $searchParams->setFilterPanoromicOn(true); 33 | break; 34 | } 35 | 36 | $searchParams->setOrientation($filter->getValue()); 37 | break; 38 | } 39 | } 40 | } 41 | return $searchParams; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /AdobeStockClient/Model/SearchParametersProvider/Pagination.php: -------------------------------------------------------------------------------- 1 | setLimit($searchCriteria->getPageSize() ?? 32); 26 | $currentPage = $searchCriteria->getCurrentPage() ?? 1; 27 | $searchParams->setOffset(($currentPage - 1) * $searchCriteria->getPageSize()); 28 | return $searchParams; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /AdobeStockClient/Model/SearchParametersProvider/Premium.php: -------------------------------------------------------------------------------- 1 | getFilterGroups() as $filterGroup) { 25 | foreach ($filterGroup->getFilters() as $filter) { 26 | if ($filter->getField() === 'premium_price_filter') { 27 | $searchParams->setFilterPremium($filter->getValue()); 28 | } 29 | } 30 | } 31 | return $searchParams; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /AdobeStockClient/Model/SearchParametersProvider/Similar.php: -------------------------------------------------------------------------------- 1 | getFilterGroups() as $filterGroup) { 28 | foreach ($filterGroup->getFilters() as $filter) { 29 | if ($filter->getField() === self::SIMILAR) { 30 | $searchParams->setSimilar((int)$filter->getValue()); 31 | break; 32 | } 33 | } 34 | } 35 | return $searchParams; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /AdobeStockClient/Model/SearchParametersProvider/Sorting.php: -------------------------------------------------------------------------------- 1 | getSortOrders() as $sortOrder) { 28 | if (false !== ($sortOrderField = array_search($sortOrder->getField(), $resultsOrders))) { 29 | $searchParams->setOrder($sortOrderField); 30 | } 31 | } 32 | 33 | return $searchParams; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /AdobeStockClient/Model/SearchParametersProviderComposite.php: -------------------------------------------------------------------------------- 1 | providers = $providers; 31 | } 32 | 33 | /** 34 | * Apply search criteria to SearchParameters 35 | * 36 | * @param SearchCriteriaInterface $searchCriteria 37 | * @param SearchParameters $searchParams 38 | * @return SearchParameters 39 | */ 40 | public function apply(SearchCriteriaInterface $searchCriteria, SearchParameters $searchParams): SearchParameters 41 | { 42 | foreach ($this->providers as $provider) { 43 | $searchParams = $provider->apply($searchCriteria, $searchParams); 44 | } 45 | return $searchParams; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /AdobeStockClient/README.md: -------------------------------------------------------------------------------- 1 | # Magento_AdobeStockClient module 2 | 3 | The Magento_AdobeStockClient module is responsible for the communication to Adobe Stock API. 4 | 5 | ## Extensibility 6 | 7 | Extension developers can interact with the Magento_AdobeStockClient module. For more information about the Magento extension mechanism, see [Magento plug-ins](https://developer.adobe.com/commerce/php/development/components/plugins/). 8 | 9 | [The Magento dependency injection mechanism](https://developer.adobe.com/commerce/php/development/components/dependency-injection/) enables you to override the functionality of the Magento_AdobeStockClient module. 10 | 11 | ## Additional information 12 | 13 | For information about significant changes in patch releases, see [2.3.x Release information](https://experienceleague.adobe.com/docs/commerce-operations/release/notes/overview.html). 14 | -------------------------------------------------------------------------------- /AdobeStockClient/Test/Unit/Model/ConnectionFactoryTest.php: -------------------------------------------------------------------------------- 1 | objectManager = new ObjectManager($this); 36 | $this->connectionFactory = $this->objectManager->getObject(ConnectionFactory::class); 37 | } 38 | 39 | /** 40 | * Test create new SDK connection instance. 41 | */ 42 | public function testCreate(): void 43 | { 44 | $methodResult = $this->connectionFactory->create( 45 | 'test_api_key', 46 | 'test_product_name', 47 | 'test_environment' 48 | ); 49 | $this->assertInstanceOf(AdobeStock::class, $methodResult); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /AdobeStockClient/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "magento/module-adobe-stock-client", 3 | "description": "Magento module responsible for interaction with Adobe Stock API implementation", 4 | "require": { 5 | "php": "~8.2.0||~8.3.0||~8.4.0", 6 | "magento/framework": "*", 7 | "magento/module-adobe-ims-api": "*", 8 | "magento/module-adobe-stock-client-api": "*", 9 | "astock/stock-api-libphp": "^1.1.6" 10 | }, 11 | "type": "magento2-module", 12 | "license": [ 13 | "OSL-3.0", 14 | "AFL-3.0" 15 | ], 16 | "autoload": { 17 | "files": [ 18 | "registration.php" 19 | ], 20 | "psr-4": { 21 | "Magento\\AdobeStockClient\\": "" 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /AdobeStockClient/etc/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 1 13 | PROD 14 | Magento 15 | https://stock.adobe.io/Rest/Media/1/Files 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AdobeStockClient/etc/module.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /AdobeStockClient/i18n/en_US.csv: -------------------------------------------------------------------------------- 1 | "Cannot retrieve the field %1. It's not available in Adobe Stock SDK","Cannot retrieve the field %1. It's not available in Adobe Stock SDK" 2 | "Files ids can not be empty.","Files ids can not be empty." 3 | "An error occurred during retrieve files information.","An error occurred during retrieve files information." 4 | "Could not retrieve files information.","Could not retrieve files information." 5 | "Adobe API Key is invalid!","Adobe API Key is invalid!" 6 | "Adobe API login has expired!","Adobe API login has expired!" 7 | ". ': %error_message'",". ': %error_message'" 8 | "Create attributes process failed: %error_message","Create attributes process failed: %error_message" 9 | -------------------------------------------------------------------------------- /AdobeStockClient/modman: -------------------------------------------------------------------------------- 1 | ./ app/code/Magento/AdobeStockClient -------------------------------------------------------------------------------- /AdobeStockClient/registration.php: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /AdobeStockClientApi/modman: -------------------------------------------------------------------------------- 1 | ./ app/code/Magento/AdobeStockClientApi -------------------------------------------------------------------------------- /AdobeStockClientApi/registration.php: -------------------------------------------------------------------------------- 1 | scopeConfig = $scopeConfig; 37 | } 38 | 39 | /** 40 | * @inheritdoc 41 | */ 42 | public function getDefaultGalleryId(): ?string 43 | { 44 | return $this->scopeConfig->getValue(self::XML_PATH_DEFAULT_GALLERY_ID_PATH); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /AdobeStockImage/Model/SerializeImage.php: -------------------------------------------------------------------------------- 1 | getCustomAttributes() as $attribute) { 29 | if ($attribute->getAttributeCode() === 'thumbnail_240_url') { 30 | $data['thumbnail_url'] = $attribute->getValue(); 31 | continue; 32 | } 33 | $data[$attribute->getAttributeCode()] = $attribute->getValue(); 34 | } 35 | return $data; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /AdobeStockImage/README.md: -------------------------------------------------------------------------------- 1 | # Magento_AdobeStockImage module 2 | 3 | The Magento_AdobeStockImage module is responsible for the images handling implementation. 4 | 5 | ## Extensibility 6 | 7 | Extension developers can interact with the Magento_AdobeStockImage module. For more information about the Magento extension mechanism, see [Magento plug-ins](https://developer.adobe.com/commerce/php/development/components/plugins/). 8 | 9 | [The Magento dependency injection mechanism](https://developer.adobe.com/commerce/php/development/components/dependency-injection/) enables you to override the functionality of the Magento_AdobeStockImage module. 10 | 11 | ## Additional information 12 | 13 | For information about significant changes in patch releases, see [2.3.x Release information](https://experienceleague.adobe.com/docs/commerce-operations/release/notes/overview.html). 14 | -------------------------------------------------------------------------------- /AdobeStockImage/Test/Integration/Model/HttpsDriverMock.php: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | Kqy5H45lnKzkC5I8JGFXYVwr2ltNwMe7 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockImage/etc/module.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /AdobeStockImage/etc/webapi.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockImage/i18n/en_US.csv: -------------------------------------------------------------------------------- 1 | "Get related images list failed: %error","Get related images list failed: %error" 2 | "An error occurred during related images serialization: %error","An error occurred during related images serialization: %error" 3 | "Failed to delete the image: %error","Failed to delete the image: %error" 4 | "Image with the same file name already exits.","Image with the same file name already exits." 5 | -------------------------------------------------------------------------------- /AdobeStockImage/modman: -------------------------------------------------------------------------------- 1 | ./ app/code/Magento/AdobeStockImage -------------------------------------------------------------------------------- /AdobeStockImage/registration.php: -------------------------------------------------------------------------------- 1 | scopeConfig = $scopeConfig; 36 | } 37 | 38 | /** 39 | * Check is the Adobe Stock integration enabled or not 40 | * 41 | * @return bool 42 | */ 43 | public function execute(): bool 44 | { 45 | return $this->scopeConfig->isSetFlag(self::XML_PATH_ENABLED); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Model/SearchCriteria/CollectionProcessor/JoinProcessor/IsLicensed.php: -------------------------------------------------------------------------------- 1 | connection = $connection; 29 | } 30 | 31 | /** 32 | * @inheritDoc 33 | */ 34 | public function apply(AbstractDb $collection): bool 35 | { 36 | $collection->getSelect()->joinLeft( 37 | ['asa' => $this->connection->getTableName(self::ADOBE_STOCK_ASSET_TABLE_NAME)], 38 | 'asa.media_gallery_id = main_table.id', 39 | ['is_licensed'] 40 | ); 41 | 42 | return true; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Plugin/AddAdobeStockSourceOptionPlugin.php: -------------------------------------------------------------------------------- 1 | 'Adobe Stock', 29 | 'label' => __('Adobe Stock'), 30 | ]; 31 | 32 | return $options; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/README.md: -------------------------------------------------------------------------------- 1 | # Magento_AdobeStockImageAdminUi module 2 | 3 | The Magento_AdobeStockImageAdminUi module is responsible for the admin panel user interface (UI) implementation. 4 | 5 | ## Extensibility 6 | 7 | Extension developers can interact with the Magento_AdobeStockImageAdminUi module. For more information about the Magento extension mechanism, see [Magento plug-ins](https://developer.adobe.com/commerce/php/development/components/plugins/). 8 | 9 | [The Magento dependency injection mechanism](https://developer.adobe.com/commerce/php/development/components/dependency-injection/) enables you to override the functionality of the Magento_AdobeStockImageAdminUi module. 10 | 11 | ### Layouts 12 | 13 | This module interacts with the following layouts and layout handles in the `view/adminhtml/layout` directory: 14 | 15 | - `cms_wysiwyg_images_index` 16 | 17 | For more information about layouts in Magento 2, see the [Layout documentation](https://developer.adobe.com/commerce/frontend-core/guide/layouts/). 18 | 19 | ### UI components 20 | 21 | You can extend admin notifications using the `view/adminhtml/ui_component/adobe_stock_images_listing.xml` configuration file. 22 | 23 | For information about UI components in Magento 2, see [Overview of UI components](https://developer.adobe.com/commerce/frontend-core/ui-components/). 24 | 25 | ## Additional information 26 | 27 | For information about significant changes in patch releases, see [2.3.x Release information](https://experienceleague.adobe.com/docs/commerce-operations/release/notes/overview.html). 28 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockApplyIsolatedFilterActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockAssertFolderSelectedActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockAssertUserLoggedActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockAssertUserNotLoggedActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockClickLicenseActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockClickSignInActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockClickSortActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockCloseSearchModalActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockExpandFiltersActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockExpandImagePreviewActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | Expands first image in grid. 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockExpandSpecifiedImagePreviewActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | Expands specified image in grid. 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockImageAssertLicenseButtonNotAvailableInMediaGalleryActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | Opens View Details panel for the image asserts that license button not exists 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockImagePreviewLocateActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockImsConditionLogoutActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockImsPopupClickSignInActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockImsPopupSignInFillUserDataActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockMediaGalleryClearFiltersActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | Clicks on 'Clear Filters' on an media gallery Grid page. 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockMediaGallerySearchByKeywordActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | Fills 'Search by keyword' on media galllery grid page page. Clicks on Submit Search. 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockModalClearAllFiltersActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | Clears all filters in Adobe Stock modal window 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockOpenFromEnhancedMediaGalleryActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockOpenNextPageActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockOpenPanelFromMediaGalleryActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockSaveLicensedActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockSavePreviewActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockSignedInViewCreditsActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminAdobeStockUserSignOutActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminApplyColorFilterValueActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminApplyNonValidColorValueToFilterActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminDeleteSelectedAdobeStockImagePreviewActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminEnhancedMediaGallerySearchAdobeStockActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | Opens Adobe Stock grid from enhanced media gallery 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminFilterResultsActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminImagePreviewKeywordSearchActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminSaveAdobeStockImagePreviewActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminSaveAdobeStockImagePreviewAndDontCheckForErrorActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminSaveAdobeStockLicensedImageActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminSearchImagesOnModalActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AdminUserApplySafeSearchFilterActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AssertAdminAdobeStockCurrentPageNumberActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AssertAdminAdobeStockFilterResultsActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AssertAdminAdobeStockImageAssertLicenseButtonMediaGalleryActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | Opens View Details panel for the unlicensed images asserts that license button exists 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AssertAdminAdobeStockImageKeywordActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AssertAdminAdobeStockImageNotFoundAfterSearchActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AssertAdminAdobeStockImagePreviewAttributeVisibleActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AssertAdminAdobeStockImageSavedActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AssertAdminAdobeStockImageUnlicensedLabelActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | grabImageLabel 15 | {{AdobeStockImageData.unlicensedText}} 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AssertAdminAdobeStockImagesNumberMoreForThisModelActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AssertAdminAdobeStockImagesNumberMoreForThisSeriesActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AssertAdminAdobeStockKeywordLocalizedActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | Verify that string is localized by regexp pattern with RU-ru locale 16 | 17 | 18 | /[\x{0400}-\x{04FF}]+/u 19 | {{stringToBeVerified}} 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AssertAdminAdobeStockThumbnailsNumberActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AssertAdminImageIsVisibleInMediaGalleryActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AssertAdminIsVisibleAdobeStockFilterElementActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/ActionGroup/AssertAdminNumberOfKeywordsInAdobeStockImagePreviewActionGroup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/Data/AdobeStockCountPerPageData.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 23 13 | 48 14 | 64 15 | 16 | 17 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/Data/AdobeStockImageData.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | my-image- 13 | Unlicensed 14 | 15 | 16 | {{_CREDS.magento/adobe_stock_licensed_image}} 17 | Licensed 18 | Food 19 | photopixel 20 | 21 | 22 | {{_CREDS.magento/adobe_stock_not_licensed_image}} 23 | Unlicensed 24 | Castles 25 | gam16 26 | 27 | 28 | {{_CREDS.magento/adobe_stock_not_licensed_new_image}} 29 | Unlicensed 30 | Family Life 31 | Drobot Dean 32 | 33 | 34 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/Data/AdobeStockLoginData.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | {{_CREDS.magento/adobe_stock_user_email}} 12 | {{_CREDS.magento/adobe_stock_user_password}} 13 | 14 | 15 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/Data/AdobeStockModalData.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | Search Adobe Stock 13 | Adobe Stock 14 | 32 15 | Failed to authenticate to Adobe Stock API. Please correct the API credentials 16 | AVAILABLE 17 | Credits 18 | Images 19 | 20 | 21 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/Section/AdminAdobeStockSaveImagePreviewSection.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 |
16 |
17 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/Section/AdminEnhancedMediaGalleryActionsSection.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 |
11 | 12 | 13 |
14 |
15 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/Section/AdminEnhancedMediaGalleryImageActionsSection.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 |
11 | 12 |
13 |
14 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/Section/AdminEnhancedMediaGalleryImageSection.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 |
11 | 12 |
13 |
14 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/Section/AdminEnhancedMediaGalleryViewDetailsSection.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 |
11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/Suite/AdobeStockIntegrationConfigurationSuite.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/Suite/AdobeStockIntegrationSuite.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/class-file-naming-allowlist: -------------------------------------------------------------------------------- 1 | AdminApplyColorFilterValue 2 | AdminMediaGalleryDeleteImage 3 | AdminAdobeStockImageVerifyLicenseActionOnMediaGallery 4 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Test/Mftf/test-dependency-allowlist: -------------------------------------------------------------------------------- 1 | AdminAdobeStockSetConfigActionGroup 2 | AdminRenditionsSetImageSizeActionGroup 3 | AdminOpenCategoryGridPageActionGroup 4 | AdminEditCategoryInGridPageActionGroup 5 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Ui/Component/Listing/Columns/ContentType/Options.php: -------------------------------------------------------------------------------- 1 | options = $options; 30 | } 31 | 32 | /** 33 | * @inheritdoc 34 | */ 35 | public function toOptionArray(): array 36 | { 37 | $options = []; 38 | foreach ($this->options as $option) { 39 | if (isset($option['label'])) { 40 | $option['label'] = __($option['label']); 41 | } 42 | $options[] = $option; 43 | } 44 | return $options; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Ui/Component/Listing/Columns/Image.php: -------------------------------------------------------------------------------- 1 | setData( 27 | 'config', 28 | array_replace_recursive( 29 | (array) $this->getData('config'), 30 | [ 31 | 'fields' => [ 32 | 'id' => self::ID, 33 | 'url' => self::URL 34 | ] 35 | ] 36 | ) 37 | ); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Ui/Component/Listing/Columns/Isolated/Options.php: -------------------------------------------------------------------------------- 1 | 1, 28 | 'label' => __('Yes') 29 | ] 30 | ]; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Ui/Component/Listing/Columns/Licensed/Options.php: -------------------------------------------------------------------------------- 1 | '1', 25 | 'label' => __('Licensed') 26 | ], 27 | [ 28 | 'value' => '0', 29 | 'label' => __('Unlicensed') 30 | ] 31 | ]; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Ui/Component/Listing/Columns/Offensive/Options.php: -------------------------------------------------------------------------------- 1 | 1, 'label' => __('All')] 27 | ]; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Ui/Component/Listing/Columns/Orientation/Options.php: -------------------------------------------------------------------------------- 1 | __('Horizontal'), 28 | 'value' => 'HORIZONTAL' 29 | ], 30 | [ 31 | 'label' => __('Vertical'), 32 | 'value' => 'VERTICAL' 33 | ], 34 | [ 35 | 'label' => __('Square'), 36 | 'value' => 'SQUARE' 37 | ], 38 | [ 39 | 'label' => __('Panoramic'), 40 | 'value' => 'PANORAMIC' 41 | ], 42 | ]; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Ui/Component/Listing/Columns/PremiumPrice/Options.php: -------------------------------------------------------------------------------- 1 | __('Standard'), 28 | 'value' => 'FALSE' 29 | ], 30 | [ 31 | 'label' => __('Premium'), 32 | 'value' => 'TRUE' 33 | ] 34 | ]; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Ui/Component/Listing/Filter/Checkbox.php: -------------------------------------------------------------------------------- 1 | applyFilter(); 28 | 29 | parent::prepare(); 30 | } 31 | 32 | /** 33 | * Apply filter 34 | * 35 | * @return void 36 | */ 37 | protected function applyFilter(): void 38 | { 39 | if (isset($this->filterData[$this->getName()])) { 40 | $value = $this->filterData[$this->getName()]; 41 | $filter = $this->filterBuilder->setConditionType('like') 42 | ->setField($this->getName()) 43 | ->setValue($value) 44 | ->create(); 45 | 46 | $this->getContext()->getDataProvider()->addFilter($filter); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/Ui/Component/Listing/Filter/RelatedImages.php: -------------------------------------------------------------------------------- 1 | filterData[$this->getName()])) { 26 | $value = (int)$this->filterData[$this->getName()]; 27 | if ($value || $value === '0') { 28 | $filter = $this->filterBuilder->setConditionType('like') 29 | ->setField($this->getName()) 30 | ->setValue($value) 31 | ->create(); 32 | 33 | $this->getContext()->getDataProvider()->addFilter($filter); 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "magento/module-adobe-stock-image-admin-ui", 3 | "description": "Magento module responsible for the admin panel images UI implementation", 4 | "require": { 5 | "php": "~8.2.0||~8.3.0||~8.4.0", 6 | "magento/framework": "*", 7 | "magento/module-adobe-ims": "*", 8 | "magento/module-adobe-ims-api": "*", 9 | "magento/module-adobe-stock-asset-api": "*", 10 | "magento/module-adobe-stock-image-api": "*", 11 | "magento/module-adobe-stock-client-api": "*", 12 | "magento/module-backend": "*", 13 | "magento/module-ui": "*", 14 | "magento/module-media-gallery-ui": "*", 15 | "magento/module-media-gallery-api": "*" 16 | }, 17 | "suggest": { 18 | "magento/module-cms": "*" 19 | }, 20 | "type": "magento2-module", 21 | "license": [ 22 | "OSL-3.0", 23 | "AFL-3.0" 24 | ], 25 | "autoload": { 26 | "files": [ 27 | "registration.php" 28 | ], 29 | "psr-4": { 30 | "Magento\\AdobeStockImageAdminUi\\": "" 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/etc/acl.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/etc/adminhtml/routes.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/etc/csp_whitelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | *.ftcdn.net 14 | *.behance.net 15 | data: 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/etc/module.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/modman: -------------------------------------------------------------------------------- 1 | ./ app/code/Magento/AdobeStockImageAdminUi -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/registration.php: -------------------------------------------------------------------------------- 1 | 11 | 12 | 31 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/templates/panel.phtml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 16 | 17 | 34 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/js/action/getLicenseStatus.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright © Magento, Inc. All rights reserved. 3 | * See COPYING.txt for license details. 4 | */ 5 | define([ 6 | 'jquery' 7 | ], function ($) { 8 | 'use strict'; 9 | 10 | return function (requestUrl, ids) { 11 | var deferred = $.Deferred(); 12 | 13 | $.ajax({ 14 | type: 'GET', 15 | url: requestUrl + '?ids=' + ids.join(','), 16 | data: { 17 | 'form_key': window.FORM_KEY 18 | }, 19 | showLoader: true, 20 | dataType: 'json', 21 | 22 | /** 23 | * Resolve with the response result 24 | * 25 | * @param {Object} response 26 | */ 27 | success: function (response) { 28 | deferred.resolve(response.result); 29 | }, 30 | 31 | /** 32 | * Reject with the message from response 33 | * 34 | * @param {Object} response 35 | */ 36 | error: function (response) { 37 | var message = response.message; 38 | 39 | if (response.status === 403) { 40 | message = $.mage.__('Your admin role does not have permissions to license an image'); 41 | } 42 | 43 | deferred.reject(message); 44 | } 45 | }); 46 | 47 | return deferred.promise(); 48 | }; 49 | }); 50 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/js/action/save.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright © Magento, Inc. All rights reserved. 3 | * See COPYING.txt for license details. 4 | */ 5 | define([ 6 | 'jquery' 7 | ], function ($) { 8 | 'use strict'; 9 | 10 | return function (requestUrl, adobeAssetId, destinationPath) { 11 | var deferred = $.Deferred(); 12 | 13 | $.ajax({ 14 | type: 'POST', 15 | url: requestUrl, 16 | dataType: 'json', 17 | showLoader: true, 18 | data: { 19 | 'media_id': adobeAssetId, 20 | 'destination_path': destinationPath 21 | }, 22 | 23 | /** 24 | * Resolve on success 25 | */ 26 | success: function () { 27 | deferred.resolve(); 28 | }, 29 | 30 | /** 31 | * Extract the error message and reject 32 | * 33 | * @param {Object} response 34 | */ 35 | error: function (response) { 36 | var message; 37 | 38 | if (typeof response.responseJSON === 'undefined' || 39 | typeof response.responseJSON.message === 'undefined' 40 | ) { 41 | message = 'Could not save the asset!'; 42 | } else { 43 | message = response.responseJSON.message; 44 | } 45 | deferred.reject(message); 46 | } 47 | }); 48 | 49 | return deferred.promise(); 50 | }; 51 | }); 52 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/js/action/savePreview.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright © Magento, Inc. All rights reserved. 3 | * See COPYING.txt for license details. 4 | */ 5 | define([ 6 | 'jquery', 7 | 'Magento_AdobeStockImageAdminUi/js/action/save', 8 | 'Magento_AdobeStockImageAdminUi/js/confirmation/save', 9 | 'Magento_AdobeStockImageAdminUi/js/path-utility' 10 | ], function ($, saveAction, saveConfirmation, pathUtility) { 11 | 'use strict'; 12 | 13 | return function (requestUrl, id, title, contentType, directoryPath) { 14 | var deferred = $.Deferred(), 15 | destinationPath; 16 | 17 | saveConfirmation( 18 | pathUtility.generateImageName(title, id), 19 | pathUtility.getImageExtension(contentType) 20 | ).then(function (fileName) { 21 | destinationPath = pathUtility.buildPath(directoryPath, fileName, contentType); 22 | 23 | saveAction( 24 | requestUrl, 25 | id, 26 | destinationPath 27 | ).then(function () { 28 | deferred.resolve(destinationPath); 29 | }).fail(function (error) { 30 | deferred.reject(error); 31 | }); 32 | }).fail(function (error) { 33 | deferred.reject(error); 34 | }); 35 | 36 | return deferred.promise(); 37 | }; 38 | }); 39 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/js/components/images-grid-sizes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright © Magento, Inc. All rights reserved. 3 | * See COPYING.txt for license details. 4 | */ 5 | define([ 6 | 'Magento_Ui/js/grid/paging/sizes', 7 | 'underscore' 8 | ], function (Sizes, _) { 9 | 'use strict'; 10 | 11 | return Sizes.extend({ 12 | defaults: { 13 | value: 32, 14 | minSize: 1, 15 | maxSize: 64 16 | }, 17 | 18 | exports: { 19 | value: '${ $.provider }:params.paging.page', 20 | options: '${ $.provider }:params.paging.options' 21 | }, 22 | 23 | sizes: { 24 | '32': { 25 | value: 32, 26 | label: 32 27 | }, 28 | '48': { 29 | value: 48, 30 | label: 48 31 | }, 32 | '64': { 33 | value: 64, 34 | label: 64 35 | } 36 | }, 37 | 38 | /** 39 | * @inheritdoc 40 | */ 41 | updateArray: function () { 42 | if (_.isUndefined(this.options)) { 43 | this.options = this.sizes; 44 | } 45 | 46 | return this._super(); 47 | } 48 | }); 49 | }); 50 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/js/confirmation/buyCredits.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright © Magento, Inc. All rights reserved. 3 | * See COPYING.txt for license details. 4 | */ 5 | 6 | define([ 7 | 'jquery', 8 | 'Magento_Ui/js/modal/confirm' 9 | ], function ($, confirm) { 10 | 'use strict'; 11 | 12 | return function (buyCreditsUrl, recordTitle, quotaMessage) { 13 | var confirmationContent = $.mage.__('License "' + recordTitle + '"'), 14 | content = '

' + confirmationContent + '

' + quotaMessage + '


'; 15 | 16 | confirm({ 17 | title: $.mage.__('License Adobe Stock Images?'), 18 | content: content, 19 | buttons: [{ 20 | text: $.mage.__('Cancel'), 21 | class: 'action-secondary action-dismiss', 22 | 23 | /** 24 | * Close modal 25 | */ 26 | click: function () { 27 | this.closeModal(); 28 | } 29 | },{ 30 | text: $.mage.__('Buy Credits'), 31 | class: 'action-primary action-accept', 32 | 33 | /** 34 | * Close modal 35 | */ 36 | click: function () { 37 | window.open(buyCreditsUrl); 38 | this.closeModal(); 39 | } 40 | }] 41 | }); 42 | }; 43 | }); 44 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/js/mediaGallery/grid/columns/licenseImage.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright © Magento, Inc. All rights reserved. 3 | * See COPYING.txt for license details. 4 | */ 5 | define([ 6 | 'Magento_MediaGalleryUi/js/grid/columns/image' 7 | ], function (Image) { 8 | 'use strict'; 9 | 10 | return Image.extend({ 11 | defaults: { 12 | viewConfig: [ 13 | { 14 | component: 'Magento_AdobeStockImageAdminUi/js/mediaGallery/grid/columns/image/licenseActions', 15 | name: '${ $.name }_actions', 16 | imageModelName: '${ $.name }', 17 | imageDetailsUrl: '${ $.imageDetailsurl }', 18 | imageComponent: '${ $.imageComponent }' 19 | } 20 | ] 21 | } 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/js/validation/validate-image-name.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright © Magento, Inc. All rights reserved. 3 | * See COPYING.txt for license details. 4 | */ 5 | 6 | define([ 7 | 'jquery', 8 | 'mage/translate', 9 | 'jquery/validate' 10 | ], function ($, $t) { 11 | 'use strict'; 12 | 13 | $.validator.addMethod( 14 | 'validate-image-name', function (value) { 15 | return /^[a-zA-Z0-9\-\_]+$/i.test(value); 16 | 17 | }, $t('Please name the file using only letters, numbers, underscores and dashes')); 18 | }); 19 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/template/grid/column/overlay.html: -------------------------------------------------------------------------------- 1 | 7 |
8 | 9 |
10 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/template/grid/column/preview/actions.html: -------------------------------------------------------------------------------- 1 | 7 |
    8 | 9 |
    10 |
    11 |
    12 | 13 |
    14 |
    15 |
    16 |
    17 |
18 | 21 | 24 | 30 | 33 | 34 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/template/grid/column/preview/keywords.html: -------------------------------------------------------------------------------- 1 | 7 |
8 |
9 | 10 |
11 | 12 | 13 | 14 |
15 |
16 | 19 |
20 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/template/grid/filter/checkbox.html: -------------------------------------------------------------------------------- 1 | 7 |
8 |
10 | 13 | 14 |
15 |
16 | 23 | 24 | 25 |
26 |
27 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/template/grid/filter/color.html: -------------------------------------------------------------------------------- 1 | 7 | 10 |
13 | 14 | 17 |
18 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/template/grid/toolbar.html: -------------------------------------------------------------------------------- 1 | 7 |
8 |
9 |
10 | 11 |
12 |
13 |
14 |
17 |
18 |
19 |
20 | 21 |
22 | 23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | 32 | 33 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/template/image/adobe-stock-image-details.html: -------------------------------------------------------------------------------- 1 | 7 |
8 |

9 |
10 | 11 |
12 | 13 |
14 |
15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/template/mediaGallery/grid/columns/image/licenseActions.html: -------------------------------------------------------------------------------- 1 | 7 | 8 |
  • 9 | 12 | 13 |
  • 14 |
    -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/template/modal/adobe-modal-prompt-content.html: -------------------------------------------------------------------------------- 1 | 7 | <% if (data.visible) { %> 8 |
    > 9 |
    10 |
    11 | <% if(data.label){ %> 12 | 15 | <% } %> 16 |
    17 | /> 18 | .<%= data.imageExtension %> 19 |
    20 |
    21 |
    22 |
    23 | <% } %> 24 | -------------------------------------------------------------------------------- /AdobeStockImageAdminUi/view/adminhtml/web/template/sorting.html: -------------------------------------------------------------------------------- 1 | 7 |
    8 | : 9 | 15 |
    16 | -------------------------------------------------------------------------------- /AdobeStockImageApi/Api/ConfigInterface.php: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /AdobeStockImageApi/modman: -------------------------------------------------------------------------------- 1 | ./ app/code/Magento/AdobeStockImageApi -------------------------------------------------------------------------------- /AdobeStockImageApi/registration.php: -------------------------------------------------------------------------------- 1 |