Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions assets/src/dashboard/parts/connected/settings/Menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ const menuItems = [
label: strings.advanced_settings_menu_item,
value: 'compression',
children: [
{
label: strings.settings_watermark_menu_item,
value: 'watermark'
},
{
label: strings.settings_compression_menu_item,
value: 'compression'
Expand Down
79 changes: 79 additions & 0 deletions assets/src/dashboard/parts/connected/settings/Watermark.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/**
* WordPress dependencies.
*/
import {
BaseControl,
Button
} from '@wordpress/components';

import { Icon, external } from '@wordpress/icons';

const Watermark = () => {
const { options_strings } = optimoleDashboardApp.strings;

const containerStyle = {
border: '2px solid #DCDCDC',
borderRadius: '8px',
padding: '16px'
};

return (
<>
<div>
<h1 className="text-xl font-bold">
{options_strings.watermark_media_title}
</h1>
<p className="text-gray-600 mt-2 mb-2" >

Copilot AI Sep 26, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extra space before the closing angle bracket. Remove the space before >.

Copilot uses AI. Check for mistakes.
{options_strings.watermark_media_desc}
</p>
</div>

<div style={containerStyle}>
<div className="mb-4 space-y-2">
<div className="flex items-center gap-2 align-center">
<div className="w-2 h-2 bg-gray-900 rounded-full flex-shrink-0"></div>
<span className="text-gray-700 text-left">{options_strings.watermark_info_1}</span>
</div>
<div className="flex items-center gap-2 align-center">
<div className="w-2 h-2 bg-gray-900 rounded-full flex-shrink-0"></div>
<span className="text-gray-700 text-left ">{options_strings.watermark_info_2}</span>

Copilot AI Sep 26, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extra space in the className attribute before the closing quote. Remove the trailing space after text-left.

Copilot uses AI. Check for mistakes.
</div>
<div className="flex items-center gap-2 align-center">
<div className="w-2 h-2 bg-gray-900 rounded-full flex-shrink-0"></div>
<span className="text-gray-700 text-left">{options_strings.watermark_info_3}</span>
</div>
</div>

<div className="flex gap-4 mb-4">
<Button
variant="primary"
className="bg-blue-600 text-white px-6 py-3 rounded-lg font-medium flex items-center gap-2 hover:bg-blue-700"
target="_blank"
rel="noopener noreferrer"
href="https://dashboard.optimole.com/dashboard"
>
<Icon
icon={external}
className="w-4 h-4"
/>
{options_strings.open_optimole_dashboard}
</Button>
<Button
variant="secondary"
className="border border-gray-300 text-gray-700 px-6 py-3 rounded-lg font-medium hover:bg-gray-50"
target="_blank"
rel="noopener noreferrer"
href="https://docs.optimole.com/article/1475-adding-watermarks-to-your-images"
>
{options_strings.learn_more}
</Button>
</div>
<span className="text-gray-500">
{options_strings.watermark_footer}
</span>
</div>
</>
);
};

export default Watermark;
26 changes: 17 additions & 9 deletions assets/src/dashboard/parts/connected/settings/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import Lazyload from './Lazyload';
import Exclusions from './Exclusions';
import OffloadMedia from './OffloadMedia';
import CloudLibrary from './CloudLibrary';
import Watermark from './Watermark';
import { saveSettings } from '../../../utils/api';
import { toggleDamSidebarLink } from '../../../utils/helpers';

Expand Down Expand Up @@ -129,16 +130,23 @@ const Settings = ({
/>
) }

{ 'watermark' === tab && (
<Watermark
/>
) }

<div className="flex justify-start items-center gap-5 mt-8">
<Button
variant="primary"
isBusy={ isLoading }
disabled={ ! canSave }
className="optml__button flex w-full justify-center rounded font-bold min-h-40 basis-1/5"
onClick={ onSaveSettings }
>
{ optimoleDashboardApp.strings.options_strings.save_changes }
</Button>
{ 'watermark' !== tab && (
<Button
variant="primary"
isBusy={ isLoading }
disabled={ ! canSave }
className="optml__button flex w-full justify-center rounded font-bold min-h-40 basis-1/5"
onClick={ onSaveSettings }
>
{ optimoleDashboardApp.strings.options_strings.save_changes }
</Button>
) }

{ ( 'disabled' === settings.autoquality && 'compression' === tab ) && (
<Button
Expand Down
9 changes: 9 additions & 0 deletions inc/admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -1655,6 +1655,7 @@ private function get_dashboard_strings() {
'dashboard_menu_item' => __( 'Dashboard', 'optimole-wp' ),
'settings_menu_item' => __( 'Settings', 'optimole-wp' ),
'help_menu_item' => __( 'Help', 'optimole-wp' ),
'settings_watermark_menu_item' => __( 'Watermark', 'optimole-wp' ),
'settings_exclusions_menu_item' => __( 'Exclusions', 'optimole-wp' ),
'settings_resize_menu_item' => __( 'Resize', 'optimole-wp' ),
'settings_compression_menu_item' => __( 'Compression', 'optimole-wp' ),
Expand Down Expand Up @@ -1709,6 +1710,14 @@ private function get_dashboard_strings() {
'configure_settings' => __( 'Configure settings', 'optimole-wp' ),
],
'options_strings' => [
'watermark_media_desc' => __( 'Protect your brand by adding a watermark to your images. Configure placement, opacity, and rules directly in your Optimole Dashboard.', 'optimole-wp' ),
'watermark_media_title' => __( 'Watermarks', 'optimole-wp' ),
'learn_more' => __( 'Learn more', 'optimole-wp' ),
'open_optimole_dashboard' => __( 'Open Optimole Dashboard', 'optimole-wp' ),
'watermark_footer' => __( 'Watermark rules and exclusions are fully managed in your Optimole Dashboard.', 'optimole-wp' ),
'watermark_info_1' => __( 'Choose from multiple watermark positions and set opacity.', 'optimole-wp' ),
'watermark_info_2' => __( 'Set different watermarks for different image sizes.', 'optimole-wp' ),
'watermark_info_3' => __( 'Create rule-based targeting by filename, page URL, class, and more.', 'optimole-wp' ),
'compression_mode' => __( 'Compression Mode', 'optimole-wp' ),
'compression_mode_speed_optimized' => __( 'Speed Optimized', 'optimole-wp' ),
'compression_mode_quality_optimized' => __( 'Quality Optimized', 'optimole-wp' ),
Expand Down
Loading