diff --git a/js/watermark.js b/js/watermark.js index 0895e83..f3e5110 100644 --- a/js/watermark.js +++ b/js/watermark.js @@ -7,7 +7,8 @@ const container = $('#lelms-watermark'); const username = lelmsData.username; - // 使用 Math.max 获取真实文档高度 + if (!username) return; + const documentHeight = Math.max( $(document).height(), $(window).height(), @@ -22,7 +23,6 @@ const rows = Math.ceil(documentHeight / spacing); const cols = Math.ceil(windowWidth / spacing); - // 使用文档片段优化性能 const fragment = document.createDocumentFragment(); for (let i = 0; i < rows; i++) { for (let j = 0; j < cols; j++) { @@ -47,7 +47,6 @@ function preventDevTools() { if (options.enable_devtools_protection !== 'yes') return; - // 优化的事件处理 document.addEventListener('keydown', function(e) { if (e.key === 'F12' || (e.ctrlKey && e.shiftKey && e.key === 'I') || @@ -58,7 +57,6 @@ } }); - // 改进的右键菜单处理 document.addEventListener('contextmenu', function(e) { const target = e.target; const allowedSelectors = [ @@ -76,13 +74,12 @@ } }); - // 优化的开发者工具检测 let devToolsCounter = 0; let lastCheck = Date.now(); const checkDevTools = () => { const now = Date.now(); - if (now - lastCheck < 800) return; // 防止过于频繁检查 + if (now - lastCheck < 800) return; lastCheck = now; const threshold = 160; @@ -134,22 +131,25 @@ }); } - // 初始化 $(document).ready(function() { preventDevTools(); - addWatermark(); + if (lelmsData.username) { + addWatermark(); + } preventCopy(); - // 使用 ResizeObserver 监听尺寸变化 const resizeObserver = new ResizeObserver(_.debounce(() => { - addWatermark(); + if (lelmsData.username) { + addWatermark(); + } }, 200)); resizeObserver.observe(document.body); - // 监听动态内容变化 const mutationObserver = new MutationObserver(_.debounce(() => { - addWatermark(); + if (lelmsData.username) { + addWatermark(); + } }, 200)); mutationObserver.observe(document.body, { @@ -158,10 +158,9 @@ attributes: true }); - // 清理函数 $(window).on('unload', () => { resizeObserver.disconnect(); mutationObserver.disconnect(); }); }); -})(jQuery); +})(jQuery); \ No newline at end of file diff --git a/lelms-copyright.php b/lelms-copyright.php index 2e33b80..573cc36 100644 --- a/lelms-copyright.php +++ b/lelms-copyright.php @@ -3,7 +3,7 @@ * Plugin Name: LeLMS Copyright * Plugin URI: https://wenpai.org/plugins/lelms-copyright * Description: Adds watermark with username and prevents unauthorized screenshots - * Version: 1.1.7 + * Version: 1.1.8 * Author: LeLMS.com * Author URI: https://lelms.com * License: GPL v2 or later @@ -18,7 +18,7 @@ if (!defined('ABSPATH')) { exit; } -define('LELMS_COPYRIGHT_VERSION', '1.1.7'); +define('LELMS_COPYRIGHT_VERSION', '1.1.8'); define('LELMS_COPYRIGHT_DIR_URL', plugin_dir_url(__FILE__)); define('LELMS_COPYRIGHT_DIR_PATH', plugin_dir_path(__FILE__)); define('LELMS_COPYRIGHT_BASENAME', plugin_basename(__FILE__)); @@ -78,11 +78,11 @@ class LELMS_Copyright { } public function register_settings() { - if (!isset($_GET['page']) || $_GET['page'] !== 'lelms-copyright') { - return; - } + register_setting('lelms_copyright', 'lelms_copyright_options', array($this, 'sanitize_options')); - register_setting('lelms_copyright', 'lelms_copyright_options', array($this, 'sanitize_options')); + if (!isset($_GET['page']) || $_GET['page'] !== 'lelms-copyright') { + return; + } add_settings_section( 'lelms_copyright_section', @@ -135,7 +135,7 @@ class LELMS_Copyright { $sanitized['watermark_spacing'] = absint($input['watermark_spacing']); $sanitized['watermark_color'] = sanitize_hex_color($input['watermark_color']); $sanitized['watermark_angle'] = intval($input['watermark_angle']); - $sanitilized['enable_devtools_protection'] = isset($input['enable_devtools_protection']) && $input['enable_devtools_protection'] === 'yes' ? 'yes' : 'no'; + $sanitized['enable_devtools_protection'] = isset($input['enable_devtools_protection']) && $input['enable_devtools_protection'] === 'yes' ? 'yes' : 'no'; $sanitized['enable_print_protection'] = isset($input['enable_print_protection']) && $input['enable_print_protection'] === 'yes' ? 'yes' : 'no'; $sanitized['enable_copy_protection'] = isset($input['enable_copy_protection']) && $input['enable_copy_protection'] === 'yes' ? 'yes' : 'no'; $sanitized['enable_for_guests'] = isset($input['enable_for_guests']) && $input['enable_for_guests'] === 'yes' ? 'yes' : 'no'; @@ -143,7 +143,7 @@ class LELMS_Copyright { $sanitized['enable_guest_custom_watermark'] = isset($input['enable_guest_custom_watermark']) && $input['enable_guest_custom_watermark'] === 'yes' ? 'yes' : 'no'; $sanitized['enable_custom_watermark'] = isset($input['enable_custom_watermark']) && $input['enable_custom_watermark'] === 'yes' ? 'yes' : 'no'; $sanitized['custom_watermark_text'] = sanitize_text_field($input['custom_watermark_text']); - $sanitized['watermark_type'] = in_array($input['watermark_type'], ['username', 'nickname', 'email', 'timestamp']) ? $input['watermark_type'] : 'username'; + $sanitized['watermark_type'] = in_array($input['watermark_type'], ['none', 'username', 'nickname', 'email', 'timestamp']) ? $input['watermark_type'] : 'username'; $sanitized['excluded_post_types'] = array_map('sanitize_key', (array) $input['excluded_post_types']); $sanitized['excluded_roles'] = array_map('sanitize_key', (array) $input['excluded_roles']); @@ -151,11 +151,6 @@ class LELMS_Copyright { } public function should_apply_protection() { - $enable_for_guests = $this->options['enable_for_guests'] === 'yes'; - if (!is_user_logged_in() && !$enable_for_guests) { - return false; - } - $user = wp_get_current_user(); $user_roles = $user && $user->roles ? $user->roles : array('guest'); if (array_intersect($user_roles, (array) $this->options['excluded_roles'])) { @@ -167,6 +162,10 @@ class LELMS_Copyright { return false; } + if (!is_user_logged_in()) { + return $this->options['enable_for_guests'] === 'yes'; + } + return true; } @@ -175,12 +174,16 @@ class LELMS_Copyright { return false; } + if ($this->options['watermark_type'] === 'none' && $this->options['enable_custom_watermark'] !== 'yes') { + return false; + } + $is_guest = !is_user_logged_in(); if ($is_guest) { return $this->options['enable_for_guests'] === 'yes' && $this->options['enable_guest_custom_watermark'] === 'yes'; - } else { - return true; } + + return true; } public function add_watermark_container() { @@ -222,6 +225,7 @@ class LELMS_Copyright { 'type' => 'select', 'description' => __('Choose the type of watermark to display for logged-in users (overridden by custom watermark if enabled).', 'lelms-copyright'), 'options' => array( + 'none' => __('No Watermark', 'lelms-copyright'), 'username' => __('Username', 'lelms-copyright'), 'nickname' => __('Nickname', 'lelms-copyright'), 'email' => __('Email', 'lelms-copyright'), @@ -412,7 +416,7 @@ class LELMS_Copyright {