diff --git a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/htmlheader.vm b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/htmlheader.vm index 09dab5797bf0..32041f990596 100644 --- a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/htmlheader.vm +++ b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/htmlheader.vm @@ -129,7 +129,30 @@ #if($xcontext.action == "admin" || $xcontext.action == "import" || $xcontext.action == "export") #set($bodyAction = "view") #end +## Query user preferences for UI customization +## Get the legacy preference for backward compatibility +#set ($a11y = "$!{xwiki.getUserPreference('accessibility')}") +#set ($underlining = "$!{xwiki.getUserPreference('underline')}") +## Underlining of links +## This preference will take the values: preference-underlining-yes, preference-underlining-only-inline-links and +## preference-underlining-no +#set ($preferenceUnderlining = "preference-underlining-") +#if ($underlining == 'Yes' || $a11y == '1') + #set ($preferenceUnderlining = $preferenceUnderlining + "yes") +#elseif($underlining == 'No') + ## The legacy a11y preference is never ON when reaching here + #set ($preferenceUnderlining = $preferenceUnderlining + "no") +#else + ## The default value `OnlyInlineLinks` has the same behavior as the fallback + #set ($preferenceUnderlining = $preferenceUnderlining + "only-inline-links") +#end ## These elements will be closed in the htmlfooter.vm file -<$bodyTagName id="body" class="skin-flamingo wiki-${xcontext.database} #if("$!doc.space" != "")space-${escapetool.xml($doc.space.replaceAll(' ', '_'))}#end ${bodyAction}body #if($showLeftPanels == "0")hideleft#end#if($showRightPanels == "0")hideright#end#if($hidecolumns && ($!hidecolumns == 1))hidelefthideright#end #if($showLeftPanels != "0" && $showRightPanels != "0" && $!hidecolumns != 1)content#end panel-left-width-${leftPanelsWidth} panel-right-width-${rightPanelsWidth} drawer drawer--right"> +## We put a space before each class added in #if, to avoid losing them because of velocity line stripping +<$bodyTagName id="body" class="skin-flamingo wiki-${xcontext.database} ${bodyAction}body panel-left-width-${leftPanelsWidth} panel-right-width-${rightPanelsWidth} drawer drawer--right ${preferenceUnderlining} + #if("$!doc.space" != "") space-${escapetool.xml($doc.space.replaceAll(' ', '_'))}#end + #if($showLeftPanels == "0") hideleft#end + #if($showRightPanels == "0") hideright#end + #if($hidecolumns && ($!hidecolumns == 1)) hidelefthideright#end + #if($showLeftPanels != "0" && $showRightPanels != "0" && $!hidecolumns != 1) content#end">
diff --git a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/less/general.less b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/less/general.less index fbf17a1eeee5..a4cb24d114e5 100644 --- a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/less/general.less +++ b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/less/general.less @@ -131,4 +131,64 @@ img { -moz-hyphens: auto; -webkit-hyphens: auto; hyphens: auto; +} + +// User preferences =========================================================== +body.content { + /* We apply various user preference related styles to the content of the page. + We use classes that are added to the body itself in htmlheader.vm */ + // Link underlining preference + &.preference-underlining-yes { + a { + text-decoration: underline; + } + } + + &.preference-underlining-only-inline-links { + // Main rule for the content + #xwikicontent a { + text-decoration: underline; + } + + // UIs where we want to underline outside of content. + .xdocLastModification, + .panel.HelpTipsPanel, + .commentauthor { + & a { + text-decoration: underline; + } + } + + /* UIs in content where we want to not underline by default. + Those elements usually contain only links that are not inline (and a lot of links). */ + #xwikicontent { + &.xwiki-livetable-container, + &.xtree, + &.xwikitabbar, + &.buttonwrapper { + & a { + text-decoration: none; + // Make sure we don't take over the default behaviour on hover with too much specificity. + &:hover, &:focus { + text-decoration: underline + } + } + } + } + + // Helper classes for easier content customization. Note that those only work for this preference. + #xwikicontent .force-no-underline a { + text-decoration: none; + } + + .force-underline a { + text-decoration: underline; + } + } + + &.preference-underlining-no { + a { + text-decoration: none; + } + } } \ No newline at end of file diff --git a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/internal/mandatory/XWikiUsersDocumentInitializer.java b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/internal/mandatory/XWikiUsersDocumentInitializer.java index 39875ebc7ebb..5a077b9ebaae 100644 --- a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/internal/mandatory/XWikiUsersDocumentInitializer.java +++ b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/internal/mandatory/XWikiUsersDocumentInitializer.java @@ -101,7 +101,7 @@ protected void createClass(BaseClass xclass) xclass.addTextField("imaccount", "imaccount", 30); xclass.addStaticListField("editor", "Default Editor", "Text|Wysiwyg"); xclass.addStaticListField("usertype", "User type", "Simple|Advanced", "Simple"); - xclass.addBooleanField("accessibility", "Enable extra accessibility features", "yesno"); + xclass.addStaticListField("underline", "Underline links", "OnlyInlineLinks|Yes|No", "OnlyInlineLinks"); xclass.addBooleanField("displayHiddenDocuments", "Display Hidden Documents", "yesno"); xclass.addTimezoneField(TIMEZONE_FIELD, "Time Zone", 30); diff --git a/xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/ApplicationResources.properties b/xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/ApplicationResources.properties index 8f8d4ddfca53..5a1a9e2f5803 100644 --- a/xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/ApplicationResources.properties +++ b/xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/ApplicationResources.properties @@ -702,10 +702,10 @@ platform.core.profile.phone=Phone platform.core.profile.address=Address platform.core.profile.editor=Default editor to use platform.core.profile.userType=User Type -platform.core.profile.enableAccessibility=Enable extra accessibility features platform.core.profile.displayHiddenDocuments=Display hidden pages platform.core.profile.timezone=Timezone platform.core.profile.extensionConflictSetup=Enable extension conflict setup +platform.core.profile.accessibility.underline=Underline links platform.core.profile.category.settings=Settings platform.core.profile.category.profile=Profile @@ -728,6 +728,7 @@ platform.core.profile.section.sendMessage=Send Message platform.core.profile.section.activity=My Activity Stream platform.core.profile.section.activityof=Activity stream of {0} platform.core.profile.section.displayPreferences=Display Preferences +platform.core.profile.section.accessibilityPreferences=Accessibility preferences platform.core.profile.section.localizationPreferences=Localization Preferences platform.core.profile.section.editorPreferences=Editor Preferences platform.core.profile.section.extensionPreferences=Extensions Preferences @@ -3456,6 +3457,10 @@ XWiki.XWikiUsers_usertype_Advanced=Advanced XWiki.XWikiUsers_phone=Phone XWiki.XWikiUsers_address=Address XWiki.XWikiUsers_extensionConflictSetup=Enable extension conflict setup +XWiki.XWikiUsers_underline=Underline links +XWiki.XWikiUsers_underline_Yes=Yes +XWiki.XWikiUsers_underline_OnlyInlineLinks=Only Inline Links +XWiki.XWikiUsers_underline_No=No ### XWiki.XWikiSkins (core) XWiki.XWikiSkins_name=Name @@ -5638,6 +5643,7 @@ core.viewers.diff.previousChange=Previous change ## until 16.3.0RC1 ####################################### xe.admin.passwordReset.step2.error.wrongParameters=Wrong parameters! Another link was already sent or this one was already accessed! +platform.core.profile.enableAccessibility=Enable extra accessibility features ## Used to indicate where deprecated keys end #@deprecatedend diff --git a/xwiki-platform-core/xwiki-platform-user/xwiki-platform-user-profile/xwiki-platform-user-profile-ui/src/main/resources/XWiki/UserProfileTranslations.xml b/xwiki-platform-core/xwiki-platform-user/xwiki-platform-user-profile/xwiki-platform-user-profile-ui/src/main/resources/XWiki/UserProfileTranslations.xml index 67a20d33f6cc..6d3c617a4b6c 100644 --- a/xwiki-platform-core/xwiki-platform-user/xwiki-platform-user-profile/xwiki-platform-user-profile-ui/src/main/resources/XWiki/UserProfileTranslations.xml +++ b/xwiki-platform-core/xwiki-platform-user/xwiki-platform-user-profile/xwiki-platform-user-profile-ui/src/main/resources/XWiki/UserProfileTranslations.xml @@ -37,7 +37,7 @@ plain/1.0 true XWiki.XWikiUsers_displayHiddenDocuments.hint=The wiki contains documents that are not displayed by default. These hidden documents represent technical content, like application classes, configuration pages, macros, styles, scripts, etc. -XWiki.XWikiUsers_accessibility.hint=Extra accessibility will enable various visual enhancements like: bigger fonts, underlined links, etc. +XWiki.XWikiUsers_underline.hint=Choose if links should be underlined. XWiki.XWikiUsers_timezone.hint=Use a specific timezone so that the dates reflect your current location. XWiki.XWikiUsers_editor.hint=Choose what editor will be the default one, overriding the default editor set globally. If not defined, a default editor is chosen, depending on what is being edited. XWiki.XWikiUsers_usertype.hint=Choose what type of user will be the default one. Advanced users will have access to multiple editing features, terminal page creation, etc. @@ -60,7 +60,16 @@ user.profile.network.saving=Saving... user.profile.network.error=Error saving the notification setting user.profile.status.done=Done user.profile.status.saving=Saving... -user.profile.status.error=Error saving the user status +user.profile.status.error=Error saving the user status + +## Used to indicate where deprecated keys start +#@deprecatedstart + +## Deprecated since 16.3.0RC1 +XWiki.XWikiUsers_accessibility.hint=Extra accessibility will enable various visual enhancements like: bigger fonts, underlined links, etc. + +## Used to indicate where deprecated keys end +#@deprecatedend XWiki.UserProfileTranslations 0 diff --git a/xwiki-platform-core/xwiki-platform-user/xwiki-platform-user-profile/xwiki-platform-user-profile-ui/src/main/resources/XWiki/XWikiUserPreferencesSheet.xml b/xwiki-platform-core/xwiki-platform-user/xwiki-platform-user-profile/xwiki-platform-user-profile-ui/src/main/resources/XWiki/XWikiUserPreferencesSheet.xml index 0936b4b262eb..abaaee554b49 100644 --- a/xwiki-platform-core/xwiki-platform-user/xwiki-platform-user-profile/xwiki-platform-user-profile-ui/src/main/resources/XWiki/XWikiUserPreferencesSheet.xml +++ b/xwiki-platform-core/xwiki-platform-user/xwiki-platform-user-profile/xwiki-platform-user-profile-ui/src/main/resources/XWiki/XWikiUserPreferencesSheet.xml @@ -287,7 +287,22 @@ <h2>$escapetool.xml($services.localization.render('platform.core.profile.section.displayPreferences'))</h2> <dl> #displayField('displayHiddenDocuments', 'platform.core.profile.displayHiddenDocuments', '0') - #displayField('accessibility' , 'platform.core.profile.enableAccessibility' , '0') + </dl> + <h2>$escapetool.xml($services.localization.render('platform.core.profile.section.accessibilityPreferences'))</h2> + #set ($defaultLegacyValue = $xwiki.getXWikiPreference('accessibility')) + <dl> + #set ($defaultValue = $xwiki.getXWikiPreference('underline')) + #if ("$!defaultValue" == '' && "$!defaultLegacyValue" == '1') + #set ($defaultValue = 'Yes') + #end + #if ("$!defaultValue" == '') + #set ($defaultValue = 'OnlyInlineLinks') + #end + #displayField('underline', 'platform.core.profile.accessibility.underline', $defaultValue) + </dl> + <dl hidden> + ## Unset the legacy 'accessibility' parameter + #displayField('accessibility', 'platform.core.profile.enableAccessibility', '') </dl> <h2>$escapetool.xml($services.localization.render('platform.core.profile.section.localizationPreferences'))</h2> <dl> diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/stylesheets.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/stylesheets.vm index b0aab9d6ca86..8131fbccb948 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/stylesheets.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/stylesheets.vm @@ -46,13 +46,6 @@ $originalUrl?$queryString## prevent line break in output -#set ($a11y = "$!{request.getCookie('a11y').getValue()}") -#if ($a11y == '') - #set ($a11y = "$!{xwiki.getUserPreference('accessibility')}") -#end -#if ($a11y == '1') - -#end ## The stylesheets configuration option allows to override the alternate stylesheets ## style1.css, style2.css and style3.css #set ($stylesheets = $xwiki.getSpacePreference('stylesheets')) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-war/src/main/webapp/resources/css/accessibility.css b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-war/src/main/webapp/resources/css/accessibility.css deleted file mode 100644 index 914e24c8dd99..000000000000 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-war/src/main/webapp/resources/css/accessibility.css +++ /dev/null @@ -1,18 +0,0 @@ -body { - font-size: 100% !important; -} -.skin-flamingo { - font-size: 160% !important; -} -a:link, a:active, a:visited { - text-decoration: underline; -} -.xwikitabbar li a, .xwikitabbar li a:visited, .xwikitabbar li a:active{ - text-decoration: none; -} -.actionmenu a:link, .actionmenu a:visited { - text-decoration: none; -} -input.button, .buttonwrapper a:visited, .buttonwrapper a:link, .buttonwrapper a:active { - text-decoration: none; -} diff --git a/xwiki-platform-distribution/xwiki-platform-distribution-ui/xwiki-platform-distribution-ui-base/src/main/resources/XWiki/WebPreferences.xml b/xwiki-platform-distribution/xwiki-platform-distribution-ui/xwiki-platform-distribution-ui-base/src/main/resources/XWiki/WebPreferences.xml index 8d700843dd9e..0097616e03c6 100644 --- a/xwiki-platform-distribution/xwiki-platform-distribution-ui/xwiki-platform-distribution-ui-base/src/main/resources/XWiki/WebPreferences.xml +++ b/xwiki-platform-distribution/xwiki-platform-distribution-ui/xwiki-platform-distribution-ui-base/src/main/resources/XWiki/WebPreferences.xml @@ -1232,6 +1232,30 @@ com.xpn.xwiki.objects.classes.StringClass + + 0 + + 0 + select + forbidden + 0 + 0 + underline + 12 + 1 + Underline links + 0 + + |, + 1 + none + + 0 + + + OnlyInlineLinks|Yes|No + com.xpn.xwiki.objects.classes.StaticListClass + 0 diff --git a/xwiki-platform-distribution/xwiki-platform-distribution-ui/xwiki-platform-distribution-ui-base/src/main/resources/XWiki/XWikiPreferences.xml b/xwiki-platform-distribution/xwiki-platform-distribution-ui/xwiki-platform-distribution-ui-base/src/main/resources/XWiki/XWikiPreferences.xml index 9c585e540374..2e9efd353b49 100644 --- a/xwiki-platform-distribution/xwiki-platform-distribution-ui/xwiki-platform-distribution-ui-base/src/main/resources/XWiki/XWikiPreferences.xml +++ b/xwiki-platform-distribution/xwiki-platform-distribution-ui/xwiki-platform-distribution-ui-base/src/main/resources/XWiki/XWikiPreferences.xml @@ -1171,6 +1171,30 @@ com.xpn.xwiki.objects.classes.StringClass + + 0 + + 0 + select + forbidden + 0 + 0 + underline + 12 + 1 + Underline links + 0 + + |, + 1 + none + + 0 + + + OnlyInlineLinks|Yes|No + com.xpn.xwiki.objects.classes.StaticListClass + 0 @@ -2652,6 +2676,30 @@ com.xpn.xwiki.objects.classes.StringClass + + 0 + + 0 + select + forbidden + 0 + 0 + underline + 12 + 1 + Underline links + 0 + + |, + 1 + none + + 0 + + + OnlyInlineLinks|Yes|No + com.xpn.xwiki.objects.classes.StaticListClass + 0 @@ -2973,6 +3021,9 @@ Your account on ${wikiname} has been successfully activated. You can now login a $tdoc.getRenderedTitle('plain/1.0') - XWiki + + OnlyInlineLinks + 107374182400