Changeset 3389865
- Timestamp:
- 11/04/2025 05:58:54 PM (5 months ago)
- Location:
- attributes-user-access
- Files:
-
- 196 added
- 4 edited
-
tags/1.2.1 (added)
-
tags/1.2.1/assets (added)
-
tags/1.2.1/assets/css (added)
-
tags/1.2.1/assets/css/admin.css (added)
-
tags/1.2.1/assets/css/front.css (added)
-
tags/1.2.1/assets/css/index.php (added)
-
tags/1.2.1/assets/css/min (added)
-
tags/1.2.1/assets/css/min/admin.min.css (added)
-
tags/1.2.1/assets/css/min/admin.min.css.map (added)
-
tags/1.2.1/assets/css/min/front.min.css (added)
-
tags/1.2.1/assets/css/min/front.min.css.map (added)
-
tags/1.2.1/assets/css/min/index.php (added)
-
tags/1.2.1/assets/css/min/tabler-icons-outline.min.css (added)
-
tags/1.2.1/assets/css/min/tabler-icons-outline.min.css.map (added)
-
tags/1.2.1/assets/css/tabler-icons-outline.css (added)
-
tags/1.2.1/assets/fonts (added)
-
tags/1.2.1/assets/fonts/index.php (added)
-
tags/1.2.1/assets/fonts/tabler (added)
-
tags/1.2.1/assets/fonts/tabler/index.php (added)
-
tags/1.2.1/assets/fonts/tabler/tabler-icons-outline.ttf (added)
-
tags/1.2.1/assets/fonts/tabler/tabler-icons-outline.woff (added)
-
tags/1.2.1/assets/fonts/tabler/tabler-icons-outline.woff2 (added)
-
tags/1.2.1/assets/img (added)
-
tags/1.2.1/assets/img/attrua-50.png (added)
-
tags/1.2.1/assets/img/attrua-icon.svg (added)
-
tags/1.2.1/assets/img/index.php (added)
-
tags/1.2.1/assets/index.php (added)
-
tags/1.2.1/assets/js (added)
-
tags/1.2.1/assets/js/admin.js (added)
-
tags/1.2.1/assets/js/index.php (added)
-
tags/1.2.1/assets/js/min (added)
-
tags/1.2.1/assets/js/min/admin.min.js (added)
-
tags/1.2.1/assets/js/min/admin.min.js.map (added)
-
tags/1.2.1/assets/js/min/index.php (added)
-
tags/1.2.1/assets/js/min/validation.min.js (added)
-
tags/1.2.1/assets/js/min/validation.min.js.map (added)
-
tags/1.2.1/assets/js/validation.js (added)
-
tags/1.2.1/attributes-user-access.php (added)
-
tags/1.2.1/changelog.txt (added)
-
tags/1.2.1/display (added)
-
tags/1.2.1/display/admin (added)
-
tags/1.2.1/display/admin/index.php (added)
-
tags/1.2.1/display/admin/settings-page.php (added)
-
tags/1.2.1/display/index.php (added)
-
tags/1.2.1/index.php (added)
-
tags/1.2.1/languages (added)
-
tags/1.2.1/languages/attrua.pot (added)
-
tags/1.2.1/languages/index.php (added)
-
tags/1.2.1/license.txt (added)
-
tags/1.2.1/readme.txt (added)
-
tags/1.2.1/src (added)
-
tags/1.2.1/src/Admin (added)
-
tags/1.2.1/src/Admin/Admin.php (added)
-
tags/1.2.1/src/Admin/index.php (added)
-
tags/1.2.1/src/Core (added)
-
tags/1.2.1/src/Core/Assets.php (added)
-
tags/1.2.1/src/Core/Extension_Manager.php (added)
-
tags/1.2.1/src/Core/Plugin.php (added)
-
tags/1.2.1/src/Core/Settings.php (added)
-
tags/1.2.1/src/Core/index.php (added)
-
tags/1.2.1/src/Front (added)
-
tags/1.2.1/src/Front/Login.php (added)
-
tags/1.2.1/src/Front/index.php (added)
-
tags/1.2.1/src/index.php (added)
-
tags/1.2.1/templates (added)
-
tags/1.2.1/templates/front (added)
-
tags/1.2.1/templates/front/forms (added)
-
tags/1.2.1/templates/front/forms/index.php (added)
-
tags/1.2.1/templates/front/forms/login-form.php (added)
-
tags/1.2.1/templates/front/index.php (added)
-
tags/1.2.1/templates/index.php (added)
-
tags/1.2.1/uninstall.php (added)
-
tags/1.2.1/vendor (added)
-
tags/1.2.1/vendor/autoload.php (added)
-
tags/1.2.1/vendor/composer (added)
-
tags/1.2.1/vendor/composer/ClassLoader.php (added)
-
tags/1.2.1/vendor/composer/InstalledVersions.php (added)
-
tags/1.2.1/vendor/composer/LICENSE (added)
-
tags/1.2.1/vendor/composer/autoload_classmap.php (added)
-
tags/1.2.1/vendor/composer/autoload_namespaces.php (added)
-
tags/1.2.1/vendor/composer/autoload_psr4.php (added)
-
tags/1.2.1/vendor/composer/autoload_real.php (added)
-
tags/1.2.1/vendor/composer/autoload_static.php (added)
-
tags/1.2.1/vendor/composer/installed.json (added)
-
tags/1.2.1/vendor/composer/installed.php (added)
-
tags/1.2.1/vendor/composer/installers (added)
-
tags/1.2.1/vendor/composer/installers/.github (added)
-
tags/1.2.1/vendor/composer/installers/.github/workflows (added)
-
tags/1.2.1/vendor/composer/installers/.github/workflows/continuous-integration.yml (added)
-
tags/1.2.1/vendor/composer/installers/.github/workflows/lint.yml (added)
-
tags/1.2.1/vendor/composer/installers/.github/workflows/phpstan.yml (added)
-
tags/1.2.1/vendor/composer/installers/LICENSE (added)
-
tags/1.2.1/vendor/composer/installers/composer.json (added)
-
tags/1.2.1/vendor/composer/installers/src (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/AglInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/AkauntingInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/BotbleInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/ChefInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/ConcreteCMSInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/DframeInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/ElggInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/ForkCMSInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/FuelInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/GravInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/HuradInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/Installer.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/ItopInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/KnownInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/MakoInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/MantisBTInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/MatomoInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/MauticInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/MayaInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/MiaoxingInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/ModxInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/OxidInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/PPIInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/PantheonInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/Plugin.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/PortoInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/ProcessWireInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/Redaxo5Installer.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/SMFInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/StarbugInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/SyliusInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/TaoInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/TastyIgniterInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/TuskInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/WinterInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/YawikInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/ZendInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php (added)
-
tags/1.2.1/vendor/composer/installers/src/bootstrap.php (added)
-
trunk/assets/css/min/admin.min.css (modified) (1 diff)
-
trunk/assets/css/min/front.min.css (modified) (1 diff)
-
trunk/assets/js/min/validation.min.js (modified) (1 diff)
-
trunk/attributes-user-access.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
attributes-user-access/trunk/assets/css/min/admin.min.css
r3389830 r3389865 1 body[class*="attributes-user-access"] { 2 background: #e6e2ef 3 } 4 5 #wpbody { 6 padding: 0 20px 7 } 8 9 #wpbody-content { 10 display: flex; 11 flex-wrap: wrap; 12 flex-direction: column 13 } 14 15 #wpbody-content>div { 16 order: 1 17 } 18 19 #wpcontent { 20 min-height: calc(100vh - 40px) 21 } 22 23 .attrua { 24 font-family: "attr"; 25 font-style: normal; 26 font-weight: normal; 27 display: inline-block; 28 text-decoration: inherit; 29 width: 1em; 30 margin-right: .2em; 31 text-align: center; 32 font-variant: normal; 33 text-transform: none; 34 line-height: 1em; 35 margin-left: .2em; 36 -webkit-font-smoothing: antialiased; 37 -moz-osx-font-smoothing: grayscale 38 } 39 40 body[class*="attributes-user-access"] { 41 background: #e6e2ef 42 } 43 44 body[class*="attributes-user-access"] #wpcontent { 45 padding: 0 46 } 47 48 body[class*="attributes-user-access"] ul#adminmenu a.wp-has-current-submenu:after, 49 body[class*="attributes-user-access"] ul#adminmenu>li.current>a.current:after { 50 border-right-color: #e6e2ef 51 } 52 53 .attrua-masthead { 54 background: #fff; 55 width: calc(100% - -40px); 56 height: 100px; 57 border-bottom: 1px solid #e2e4e7; 58 order: 0 !important; 59 margin-left: -20px 60 } 61 62 .attrua-masthead-container { 63 display: flex; 64 height: 100px; 65 justify-content: center; 66 align-items: center; 67 width: 100% 68 } 69 70 .attrua-masthead-logo-container { 71 width: 1024px; 72 text-align: center; 73 font-size: 40px; 74 display: flex; 75 justify-content: center; 76 align-items: center; 77 gap: 20px; 78 font-weight: 600 79 } 80 81 .attrua-version-number { 82 font-size: large; 83 color: #999 84 } 85 86 body[class*="attributes-user-access"] #wpcontent { 87 padding: 0 88 } 89 90 .attrua-wrapper { 91 padding: 20px 92 } 93 94 .attrua-wrapper .attrua-nav-tabs { 95 display: none 96 } 97 98 .attrua-tab-content { 99 position: relative; 100 margin: 40px 0 20px; 101 background: #fff; 102 padding: 40px; 103 border-radius: 20px; 104 box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.1) 105 } 106 107 .attrua-tab-content .description { 108 display: flex; 109 flex-wrap: wrap; 110 gap: 20px; 111 margin-bottom: 30px 112 } 113 114 .attrua-tab-content .description>div { 115 flex: 1; 116 min-width: 300px 117 } 118 119 .attrua-tab-content .description h3 { 120 margin-top: 0; 121 color: #1d2327 122 } 123 124 .attrua-footerline { 125 text-align: center; 126 margin: 20px 0; 127 color: #646970 128 } 129 130 .attrua-footerline a { 131 color: #2271b1; 132 text-decoration: none 133 } 134 135 .attrua-footerline a:hover { 136 color: #135e96 137 } 138 139 .attrua-settings-section { 140 margin-top: 20px; 141 background: #fff; 142 border: 1px solid #c3c4c7; 143 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); 144 border-radius: 4px; 145 overflow: hidden 146 } 147 148 .attrua-settings-section h2 { 149 margin: 0 0 15px; 150 padding: 0; 151 font-size: 1.4em; 152 font-weight: 600 153 } 154 155 .attrua-section-header { 156 padding: 20px 20px 0 157 } 158 159 .attrua-settings-section .description { 160 margin-bottom: 20px; 161 color: #646970 162 } 163 164 .attrua-settings-section .form-table { 165 margin-top: 0 166 } 167 168 .attrua-settings-section .form-table th { 169 padding: 20px; 170 vertical-align: top; 171 font-weight: 600 172 } 173 174 .attrua-settings-section .form-table.attrua-pages-table th { 175 vertical-align: middle 176 } 177 178 .attrua-settings-section .form-table td { 179 padding: 20px 10px; 180 vertical-align: middle 181 } 182 183 .attrua-settings-section fieldset { 184 margin: 0; 185 padding: 0; 186 border: none 187 } 188 189 .attrua-settings-section legend { 190 margin: 0 0 10px; 191 font-weight: 600 192 } 193 194 .attrua-pages-table { 195 border-collapse: collapse; 196 width: 100% 197 } 198 199 .attrua-pages-table th, 200 .attrua-pages-table td { 201 padding: 15px; 202 border-bottom: 1px solid #e2e4e7 203 } 204 205 .attrua-page-title { 206 width: 100%; 207 padding: 8px; 208 border: 1px solid #dcdcde; 209 border-radius: 4px 210 } 211 212 .attrua-page-title-display, 213 .attrua-page-slug-display { 214 font-weight: normal 215 } 216 217 .attrua-page-control { 218 position: relative 219 } 220 221 .attrua-page-row code { 222 font-family: monospace; 223 color: #666; 224 padding: 8px; 225 background: #f0f0f1; 226 border-radius: 4px; 227 width: fit-content 228 } 229 230 .attrua-page-shortcode { 231 display: flex; 232 align-items: center; 233 gap: 8px 234 } 235 236 .attrua-copy-shortcode { 237 padding: 2px 8px; 238 background: #fff; 239 border-radius: 3px; 240 cursor: pointer; 241 font-size: 20px; 242 border: none; 243 color: #2196F3 244 } 245 246 .attrua-copy-shortcode:hover { 247 background: #f6f7f7 248 } 249 250 .attrua-page-prefix { 251 padding: 8px 3px 252 } 253 254 .attrua-page-actions { 255 display: flex; 256 gap: 8px 257 } 258 259 .attrua-page-actions .button { 260 display: inline-flex; 261 align-items: center; 262 min-width: 80px; 263 justify-content: center 264 } 265 266 .attrua-page-actions .attrua-delete { 267 border-color: #d63638; 268 color: #d63638 269 } 270 271 .attrua-page-actions .attrua-delete:hover { 272 border-color: #a12224; 273 color: #a12224 274 } 275 276 .attrua-page-actions .button:disabled { 277 opacity: 0.7; 278 cursor: wait 279 } 280 281 .attrua-redirect-toggle { 282 display: flex; 283 align-items: center; 284 gap: 8px 285 } 286 287 .attrua-redirect-url { 288 margin-top: 4px; 289 display: block; 290 color: #666; 291 font-family: monospace; 292 word-break: break-all; 293 white-space: nowrap; 294 overflow: hidden; 295 text-overflow: ellipsis; 296 padding: 4px 8px; 297 border-radius: 4px; 298 width: 100% 299 } 300 301 .attrua-redirect-toggle .slider { 302 position: relative; 303 display: inline-block; 304 width: 100px; 305 max-width: 40px; 306 height: 24px; 307 background-color: #ccc; 308 border-radius: 12px; 309 transition: .4s; 310 cursor: pointer 311 } 312 313 .attrua-redirect-toggle .slider:before { 314 position: absolute; 315 content: ""; 316 height: 16px; 317 width: 16px; 318 left: 4px; 319 bottom: 4px; 320 background-color: white; 321 transition: .4s; 322 border-radius: 50% 323 } 324 325 .attrua-redirect-toggle input:checked+.slider { 326 background-color: #2196F3 327 } 328 329 .attrua-redirect-toggle input:checked+.slider:before { 330 transform: translateX(16px) 331 } 332 333 .attrua-redirect-toggle input { 334 opacity: 0 335 } 336 337 input:disabled+.slider { 338 background-color: #e0e0e0; 339 cursor: not-allowed 340 } 341 342 .attrua-settings-section input[type="text"] { 343 font-weight: normal; 344 background: #f8fcff; 345 border-color: #b9c6d3 346 } 347 348 @media screen and (max-width:782px) { 349 .attrua-settings-section .form-table th { 350 padding-bottom: 10px 351 } 352 353 .attrua-settings-section .form-table td { 354 padding-left: 0 355 } 356 357 .attrua-page-actions { 358 flex-direction: column 359 } 360 361 .attrua-page-actions .button { 362 width: 100%; 363 margin-bottom: 8px 364 } 365 } 366 367 .attrua-field-error { 368 border-color: #d63638 !important; 369 box-shadow: 0 0 0 1px #d63638 !important; 370 outline: 2px solid transparent 371 } 372 373 .attrua-notification.error, 374 .attrua-error { 375 border-left: 4px solid #d63638; 376 animation: shake 0.5s cubic-bezier(.36, .07, .19, .97) both 377 } 378 379 @keyframes shake { 380 381 10%, 382 90% { 383 transform: translate3d(-1px, 0, 0) 384 } 385 386 20%, 387 80% { 388 transform: translate3d(2px, 0, 0) 389 } 390 391 30%, 392 50%, 393 70% { 394 transform: translate3d(-4px, 0, 0) 395 } 396 397 40%, 398 60% { 399 transform: translate3d(4px, 0, 0) 400 } 401 } 402 403 .attrua-notifications-container { 404 position: fixed; 405 bottom: 20px; 406 right: 20px; 407 width: 300px; 408 z-index: 9999; 409 display: flex; 410 flex-direction: column-reverse; 411 gap: 10px 412 } 413 414 .attrua-notification { 415 color: #fff; 416 border-radius: 8px; 417 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1), 0 4px 8px rgba(0, 0, 0, 0.1); 418 overflow: hidden; 419 display: flex; 420 align-items: start; 421 opacity: 0; 422 transform: translateX(100%); 423 transition: all 0.3s ease 424 } 425 426 .attrua-notification.show { 427 opacity: 1; 428 transform: translateX(0) 429 } 430 431 .attrua-notification.success { 432 background: #00a3297e 433 } 434 435 .attrua-notification.error { 436 background: #d636397c 437 } 438 439 .attrua-notification.warning { 440 background: #ffb900 441 } 442 443 .attrua-notification.info { 444 background: #00a0d2 445 } 446 447 .attrua-notification-content { 448 padding: 12px 40px 12px 12px; 449 position: relative; 450 flex-grow: 1; 451 display: flex; 452 align-items: center; 453 justify-content: space-between; 454 line-height: 1.4 455 } 456 457 .attrua-notification-dismiss { 458 position: absolute; 459 top: 11.5px; 460 right: 8px; 461 border: none; 462 background: none; 463 cursor: pointer; 464 padding: 4px; 465 color: #fff; 466 border-radius: 50%; 467 line-height: 1 468 } 469 470 .attrua-notification-dismiss:hover { 471 color: #1e1e1e; 472 background: #f0f0f0 473 } 474 475 .attrua-notification.hide { 476 opacity: 0; 477 transform: translateX(100%) 478 } 479 480 .attrua-notification .dashicons { 481 font-size: 16px; 482 width: 16px; 483 height: 16px 484 } 485 486 @media screen and (max-width:782px) { 487 .attrua-notifications-container { 488 top: 46px; 489 right: 10px 490 } 491 } 492 493 body:not(.admin-bar) .attrua-notifications-container { 494 top: 10px 495 } 496 497 .attrua-premium-feature { 498 position: relative; 499 padding-right: 100px 500 } 501 502 .attrua-premium-badge { 503 position: absolute; 504 top: 20px; 505 right: 20px; 506 padding: 4px 8px; 507 background: #2271b1; 508 color: #fff; 509 font-size: 12px; 510 font-weight: 600; 511 border-radius: 3px 512 } 513 514 .attrua-settings-section a:focus, 515 .attrua-settings-section button:focus, 516 .attrua-settings-section input:focus { 517 box-shadow: 0 0 0 1px #2271b1, 0 0 2px 1px rgba(34, 113, 177, 0.8); 518 outline: 1px solid transparent 519 } 520 521 .screen-reader-text:not(:focus) { 522 position: absolute !important; 523 width: 1px !important; 524 height: 1px !important; 525 padding: 0 !important; 526 margin: -1px !important; 527 overflow: hidden !important; 528 clip: rect(0, 0, 0, 0) !important; 529 white-space: nowrap !important; 530 border: 0 !important 531 } 532 1 533 .attrua { 2 534 font-family: attr; -
attributes-user-access/trunk/assets/css/min/front.min.css
r3331069 r3389865 1 .attrua-form-wrapper{max-width:480px;margin:2rem auto;padding:2rem;background:var(--attrua-form-bg,#fff);border-radius:.5rem;box-shadow:0 2px 4px rgba(0,0,0,.1)}@media (prefers-color-scheme:dark){.attrua-form-wrapper{--attrua-form-bg:#1a1a1a;--attrua-text-color:#ffffff;--attrua-border-color:#333333}}.attrua-form-description{font-size:13px;background:#f3f4f6;padding:15px;border-radius:5px;margin-bottom:20px}.attrua-form-row{margin-bottom:1.5rem}.attrua-form-row label{display:block;margin-bottom:.5rem;color:var(--attrua-label-color,#333);font-weight:500;font-size:18px}.attrua-form-row label .required{color:#f44336}.attrua-form-row .description{font-size:12px;font-style:italic}.attrua-input{width:100%;width:-moz-available;width:-webkit-fill-available;padding:.75rem;border:1px solid var(--attrua-border-color,#d1d5db);border-radius:.375rem;background-color:var(--attrua-input-bg,#fff);color:var(--attrua-text-color,#1a1a1a);transition:border-color .2s ease}.attrua-input:focus{outline:0;border-color:var(--attrua-primary-color,#2563eb);box-shadow:0 0 0 2px rgba(37,99,235,.2)}.attrua-password-field{position:relative}.attrua-toggle-password{position:absolute;right:.75rem;top:50%;transform:translateY(-50%);padding:.25rem;background:0 0;border:none;color:var(--attrua-icon-color,#6b7280);cursor:pointer;opacity:.8;transition:opacity .2s ease}.attrua-toggle-password:hover{opacity:1}.attrua-instructions{margin:1rem 0;padding:1rem;background-color:var(--attrua-requirements-bg,#f3f4f6);border-radius:.375rem;font-size:12px}.attrua-instructions,.attrua-password-requirements{margin:1rem 0;padding:1rem;background-color:var(--attrua-requirements-bg,#f3f4f6);border-radius:.375rem;font-size:12px}.attrua-instructions h5,.attrua-password-requirements h5{margin-top:0}.attrua-password-requirements ul{margin:0;padding:0;list-style:none}.attrua-password-requirements li{position:relative;padding-left:1.5rem;margin-bottom:.5rem;color:var(--attrua-text-muted,#6b7280);transition:color .2s ease}.attrua-password-requirements li::before{content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);width:1rem;height:1rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%236b7280'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z' clip-rule='evenodd'/%3E%3C/svg%3E");background-size:contain;opacity:.5;transition:opacity .2s ease}.attrua-password-requirements li.met{color:var(--attrua-success-color,#059669)}.attrua-password-requirements li.met::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%23059669'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z' clip-rule='evenodd'/%3E%3C/svg%3E");opacity:1}.attrua-submit-button{width:100%;padding:.75rem 1.5rem;background-color:var(--attrua-primary-color,#2563eb);color:#fff;border:none;border-radius:.375rem;font-size:20px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.attrua-submit-button:hover{background-color:var(--attrua-primary-dark,#1d4ed8)}.attrua-submit-button:disabled{background-color:var(--attrua-disabled-color,#9ca3af);cursor:not-allowed}.attrua-form-links{margin-top:1.5rem;text-align:center;font-size:.875rem}.attrua-form-links a{color:var(--attrua-link-color,#2563eb);text-decoration:none;transition:color .2s ease}.attrua-form-links a:hover{color:var(--attrua-link-hover,#1d4ed8);text-decoration:underline}.attrua-link-separator{margin:0 .5rem;color:var(--attrua-text-muted,#6b7280)}.attrua-message-container{margin-bottom:1.5rem;padding:1rem;border-radius:.375rem;font-size:.875rem}.attrua-message-container.error{background-color:var(--attrua-error-bg,#fee2e2);color:var(--attrua-error-text,#991b1b);border:1px solid var(--attrua-error-border,#fecaca)}.attrua-message-container.success{background-color:var(--attrua-success-bg,#dcfce7);color:var(--attrua-success-text,#166534);border:1px solid var(--attrua-success-border,#bbf7d0)}.attrua-field-error{margin-top:.5rem;font-size:.875rem;color:var(--attrua-error-text,#991b1b)}@media (max-width:640px){.attrua-form-wrapper{margin:1rem;padding:1.5rem}.attrua-form-row{margin-bottom:1rem}.attrua-password-requirements{padding:.75rem}}[dir=rtl] .attrua-toggle-password{right:auto;left:.75rem}[dir=rtl] .attrua-password-requirements li{padding-left:0;padding-right:1.5rem}[dir=rtl] .attrua-password-requirements li::before{left:auto;right:0}@media (prefers-reduced-motion:reduce){.attrua-input,.attrua-strength-meter::before,.attrua-submit-button{transition:none}}.attrua-input:focus-visible,.attrua-submit-button:focus-visible,.attrua-toggle-password:focus-visible{outline:2px solid var(--attrua-focus-ring,#3b82f6);outline-offset:2px}@media (forced-colors:active){.attrua-submit-button{border:1px solid ButtonText}.attrua-strength-meter::before{background-color:Highlight}} 2 /*# sourceMappingURL=front.min.css.map */ 1 .attrua-form-wrapper { 2 max-width: 480px; 3 margin: 2rem auto; 4 padding: 2rem; 5 background: var(--attrua-form-bg, #ffffff); 6 border-radius: 0.5rem; 7 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) 8 } 9 10 @media (prefers-color-scheme:dark) { 11 .attrua-form-wrapper { 12 --attrua-form-bg: #1a1a1a; 13 --attrua-text-color: #ffffff; 14 --attrua-border-color: #333333 15 } 16 } 17 18 .attrua-form-description { 19 font-size: 13px; 20 background: #f3f4f6; 21 padding: 15px; 22 border-radius: 5px; 23 margin-bottom: 20px 24 } 25 26 .attrua-form-row { 27 margin-bottom: 1.5rem 28 } 29 30 .attrua-form-row label { 31 display: block; 32 margin-bottom: 0.5rem; 33 color: var(--attrua-label-color, #333333); 34 font-weight: 500; 35 font-size: 18px 36 } 37 38 .attrua-form-row label .required { 39 color: #F44336 40 } 41 42 .attrua-form-row .description { 43 font-size: 16px; 44 font-style: italic; 45 line-height: 1 46 } 47 48 .attrua-input { 49 width: 100%; 50 width: -moz-available; 51 width: -webkit-fill-available; 52 padding: 0.75rem; 53 border: 1px solid var(--attrua-border-color, #d1d5db); 54 border-radius: 0.375rem; 55 background-color: var(--attrua-input-bg, #ffffff); 56 color: var(--attrua-text-color, #1a1a1a); 57 transition: border-color 0.2s ease 58 } 59 60 .attrua-input:focus { 61 outline: none; 62 border-color: var(--attrua-primary-color, #2563eb); 63 box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.2) 64 } 65 66 .attrua-password-field { 67 position: relative 68 } 69 70 .attrua-toggle-password { 71 position: absolute; 72 right: 0.75rem; 73 top: 50%; 74 transform: translateY(-50%); 75 padding: 0.25rem; 76 background: none; 77 border: none; 78 color: var(--attrua-icon-color, #6b7280); 79 cursor: pointer; 80 opacity: 0.8; 81 transition: opacity 0.2s ease 82 } 83 84 .attrua-toggle-password:hover { 85 opacity: 1 86 } 87 88 .attrua-instructions { 89 margin: 1rem 0; 90 padding: 1rem; 91 background-color: var(--attrua-requirements-bg, #f3f4f6); 92 border-radius: 0.375rem; 93 font-size: 12px 94 } 95 96 .attrua-instructions, 97 .attrua-password-requirements { 98 margin: 1rem 0; 99 padding: 1rem; 100 background-color: var(--attrua-requirements-bg, #f3f4f6); 101 border-radius: 0.375rem; 102 font-size: 12px 103 } 104 105 .attrua-instructions h5, 106 .attrua-password-requirements h5 { 107 margin-top: 0 108 } 109 110 .attrua-password-requirements ul { 111 margin: 0; 112 padding: 0; 113 list-style: none 114 } 115 116 .attrua-password-requirements li { 117 position: relative; 118 padding-left: 1.5rem; 119 margin-bottom: 0.5rem; 120 color: var(--attrua-text-muted, #6b7280); 121 transition: color 0.2s ease 122 } 123 124 .attrua-password-requirements li::before { 125 content: ''; 126 position: absolute; 127 left: 0; 128 top: 50%; 129 transform: translateY(-50%); 130 width: 1rem; 131 height: 1rem; 132 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%236b7280'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z' clip-rule='evenodd'/%3E%3C/svg%3E"); 133 background-size: contain; 134 opacity: 0.5; 135 transition: opacity 0.2s ease 136 } 137 138 .attrua-password-requirements li.met { 139 color: var(--attrua-success-color, #059669) 140 } 141 142 .attrua-password-requirements li.met::before { 143 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%23059669'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z' clip-rule='evenodd'/%3E%3C/svg%3E"); 144 opacity: 1 145 } 146 147 .attrua-submit-button { 148 width: 100%; 149 padding: 0.75rem 1.5rem; 150 background-color: var(--attrua-primary-color, #2563eb); 151 color: #ffffff; 152 border: none; 153 border-radius: 0.375rem; 154 font-size: 20px; 155 font-weight: 500; 156 cursor: pointer; 157 transition: background-color 0.2s ease 158 } 159 160 .attrua-submit-button:hover { 161 background-color: var(--attrua-primary-dark, #1d4ed8) 162 } 163 164 .attrua-submit-button:disabled { 165 background-color: var(--attrua-disabled-color, #9ca3af); 166 cursor: not-allowed 167 } 168 169 .attrua-form-links { 170 margin-top: 1.5rem; 171 text-align: center; 172 font-size: 0.875rem 173 } 174 175 .attrua-form-links a { 176 color: var(--attrua-link-color, #2563eb); 177 text-decoration: none; 178 transition: color 0.2s ease 179 } 180 181 .attrua-form-links a:hover { 182 color: var(--attrua-link-hover, #1d4ed8); 183 text-decoration: underline 184 } 185 186 .attrua-link-separator { 187 margin: 0 0.5rem; 188 color: var(--attrua-text-muted, #6b7280) 189 } 190 191 .attrua-message-container { 192 margin-bottom: 1.5rem; 193 padding: 1rem; 194 border-radius: 0.375rem; 195 font-size: 0.875rem 196 } 197 198 .attrua-message-container.error { 199 background-color: var(--attrua-error-bg, #fee2e2); 200 color: var(--attrua-error-text, #991b1b); 201 border: 1px solid var(--attrua-error-border, #fecaca) 202 } 203 204 .attrua-message-container.success { 205 background-color: var(--attrua-success-bg, #dcfce7); 206 color: var(--attrua-success-text, #166534); 207 border: 1px solid var(--attrua-success-border, #bbf7d0) 208 } 209 210 .attrua-field-error { 211 margin-top: 0.5rem; 212 font-size: 0.875rem; 213 color: var(--attrua-error-text, #991b1b) 214 } 215 216 @media (max-width:640px) { 217 .attrua-form-wrapper { 218 margin: 1rem; 219 padding: 1.5rem 220 } 221 222 .attrua-form-row { 223 margin-bottom: 1rem 224 } 225 226 .attrua-password-requirements { 227 padding: 0.75rem 228 } 229 } 230 231 [dir="rtl"] .attrua-toggle-password { 232 right: auto; 233 left: 0.75rem 234 } 235 236 [dir="rtl"] .attrua-password-requirements li { 237 padding-left: 0; 238 padding-right: 1.5rem 239 } 240 241 [dir="rtl"] .attrua-password-requirements li::before { 242 left: auto; 243 right: 0 244 } 245 246 @media (prefers-reduced-motion:reduce) { 247 248 .attrua-input, 249 .attrua-submit-button, 250 .attrua-strength-meter::before { 251 transition: none 252 } 253 } 254 255 .attrua-input:focus-visible, 256 .attrua-submit-button:focus-visible, 257 .attrua-toggle-password:focus-visible { 258 outline: 2px solid var(--attrua-focus-ring, #3b82f6); 259 outline-offset: 2px 260 } 261 262 @media (forced-colors:active) { 263 .attrua-submit-button { 264 border: 1px solid ButtonText 265 } 266 267 .attrua-strength-meter::before { 268 background-color: Highlight 269 } 270 } -
attributes-user-access/trunk/assets/js/min/validation.min.js
r3331069 r3389865 1 (function($){"use strict";class PasswordToggle{constructor(form){this.form=$(form);this.toggleButtons=this.form.find(".attrua-toggle-password");this.initialize()}initialize(){this.toggleButtons.each((_,button)=>{const $button=$(button);$button.on("click",e=>{e.preventDefault();const $field=$button.closest(".attrua-password-field");const $input=$field.find("input");const $icon=$button.find(".ti");if($input.length){const isPassword=$input.attr("type")==="password";$input.attr("type",isPassword?"text":"password");$icon.removeClass(isPassword?"ti-eye":"ti-eye-off").addClass(isPassword?"ti-eye-off":"ti-eye");$button.attr("aria-label",isPassword?"Hide password":"Show password")}});$button.find(".ti").addClass("ti-eye");$button.attr("aria-label","Show password")})}}class LoginForm{constructor(form,options){this.form=$(form);this.options=$.extend({},LoginForm.defaults,options);this.submitButton=this.form.find(this.options.submitButtonSelector);this.usernameField=this.form.find("#attrua_username");this.passwordField=this.form.find("#attrua_password");this.requiredFields=this.form.find("input[required]");this.usernameError=this.usernameField.siblings(".attrua-field-error");this.passwordError=this.passwordField.siblings(".attrua-field-error");this.initialize()}initialize(){this.form.on("submit",e=>this.handleSubmit(e));this.requiredFields.on("input",()=>this.validateForm());new PasswordToggle(this.form);this.validateForm()}validateForm(){let isValid=true;this.usernameError.text("");this.passwordError.text("");if(!this.usernameField.val().trim()){isValid=false}if(!this.passwordField.val()){isValid=false}this.submitButton.prop("disabled",!isValid);return isValid}handleSubmit(event){if(!this.options.ajaxLogin){return}event.preventDefault();if(!this.validateForm()){return}this.submitButton.prop("disabled",true).text(this.options.i18n.loggingIn);this.form.off("submit").submit()}}LoginForm.defaults={submitButtonSelector:".attrua-submit-button",ajaxLogin:false,i18n:{loggingIn:"Logging in...",invalidCredentials:"Invalid username or password."}};$(document).ready(function(){$(".attrua-login-form").each(function(){const form=$(this);if(!$.data(this,"attrua-login")){$.data(this,"attrua-login",new LoginForm(this,window.attruaFront||{}))}})})})(jQuery);1 !function(e){"use strict";class t{constructor(t){this.form=e(t),this.toggleButtons=this.form.find(".attrua-toggle-password"),this.initialize()}initialize(){this.toggleButtons.each(((t,s)=>{const i=e(s);i.on("click",(e=>{e.preventDefault();const t=i.closest(".attrua-password-field"),s=t.find("input"),o=i.find(".ti");if(s.length){const e="password"===s.attr("type");s.attr("type",e?"text":"password"),o.removeClass(e?"ti-eye":"ti-eye-off").addClass(e?"ti-eye-off":"ti-eye"),i.attr("aria-label",e?"Hide password":"Show password")}})),i.find(".ti").addClass("ti-eye"),i.attr("aria-label","Show password")}))}}class s{constructor(t,i){this.form=e(t),this.options=e.extend({},s.defaults,i),this.submitButton=this.form.find(this.options.submitButtonSelector),this.usernameField=this.form.find("#attrua_username"),this.passwordField=this.form.find("#attrua_password"),this.requiredFields=this.form.find("input[required]"),this.usernameError=this.usernameField.siblings(".attrua-field-error"),this.passwordError=this.passwordField.siblings(".attrua-field-error"),this.initialize()}initialize(){this.form.on("submit",(e=>this.handleSubmit(e))),this.requiredFields.on("input",(()=>this.validateForm())),new t(this.form),this.validateForm()}validateForm(){let e=!0;return this.usernameError.text(""),this.passwordError.text(""),this.usernameField.val().trim()||(e=!1),this.passwordField.val()||(e=!1),this.submitButton.prop("disabled",!e),e}handleSubmit(e){this.options.ajaxLogin&&(e.preventDefault(),this.validateForm()&&(this.submitButton.prop("disabled",!0).text(this.options.i18n.loggingIn),this.form.off("submit").submit()))}}s.defaults={submitButtonSelector:".attrua-submit-button",ajaxLogin:!1,i18n:{loggingIn:"Logging in...",invalidCredentials:"Invalid username or password."}},e(document).ready((function(){e(".attrua-login-form").each((function(){const t=e(this);e.data(this,"attrua-login")||e.data(this,"attrua-login",new s(this,window.attruaFront||{}))}))}))}(jQuery); -
attributes-user-access/trunk/attributes-user-access.php
r3389830 r3389865 7 7 * Author: Attributes WP 8 8 * Author URI: https://attributeswp.com/ 9 * Version: 1.2. 09 * Version: 1.2.1 10 10 * Text Domain: attributes-user-access 11 11 * Domain Path: /languages … … 34 34 * improves maintainability and prevents magic values in the codebase. 35 35 */ 36 define('ATTRUA_VERSION', '1.2. 0');36 define('ATTRUA_VERSION', '1.2.1'); 37 37 define('ATTRUA_FILE', __FILE__); 38 38 define('ATTRUA_PATH', plugin_dir_path(__FILE__));
Note: See TracChangeset
for help on using the changeset viewer.