From db12738f8d4da84e5bab877a829606ce8708c9ff Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Tue, 10 Mar 2026 10:25:44 +0100 Subject: [PATCH 01/56] add initCelements.js to albatross --- .../webapp/templates/celTemplates/ObjectEdit.vm | 16 +++++++++------- src/main/webapp/templates/javascript.vm | 1 + 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/webapp/templates/celTemplates/ObjectEdit.vm b/src/main/webapp/templates/celTemplates/ObjectEdit.vm index afe78bc5d..f2f13a11c 100644 --- a/src/main/webapp/templates/celTemplates/ObjectEdit.vm +++ b/src/main/webapp/templates/celTemplates/ObjectEdit.vm @@ -181,16 +181,18 @@ #else #set($properties = $class.properties) #end +#set($jsService = $services.javascript) +#set($extJsParam = $jsService.createExtJSParam().setAction('file')) #foreach($prop in $properties) #set($classRef = $services.model.resolveDocument($class.getName())) #if($services.editorsupport.getSuggestBaseClass($classRef, "$!prop.getName()").isPicker()) -$services.javascript.addExtJSfileOnce(':celJS/prototype.js') -$services.javascript.addExtJSfileOnce(':js/xwiki/xwiki.js', 'file') -$services.javascript.addExtJSfileOnce(':uicomponents/widgets/list/xlist.js', 'file') -<-- ajaxSuggest loaded ?? --> -$services.javascript.addExtJSfileOnce(':js/xwiki/suggest/ajaxSuggest.js', 'file') -$services.javascript.addExtJSfileOnce(':js/scriptaculous/effects.js', 'file') -$services.javascript.addExtJSfileOnce(':celJS/addSuggest.js', 'file') +$!jsService.includeExtJsFile($extJsParam.setJsFile(':celJS/prototype.js'))## +$!jsService.includeExtJsFile($extJsParam.setJsFile(':celJS/initCelements.min.js'))## +$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/xwiki.js', 'file'))## +$!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/list/xlist.js', 'file'))## +$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/suggest/ajaxSuggest.js', 'file'))## +$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/scriptaculous/effects.js', 'file'))## +$!jsService.includeExtJsFile($extJsParam.setJsFile(':celJS/addSuggest.js', 'file'))## #end #if($cel_embedded_editobj) #set($cel_editobj_validationClass = '') diff --git a/src/main/webapp/templates/javascript.vm b/src/main/webapp/templates/javascript.vm index 081efad45..dc6d9ba51 100644 --- a/src/main/webapp/templates/javascript.vm +++ b/src/main/webapp/templates/javascript.vm @@ -11,6 +11,7 @@ $!jsService.includeExtJsFile($extJsParam.setJsFile(':celJS/prototype.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':celJS/jquery.min.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':celJS/jquery-noconflict.js'))## +$!jsService.includeExtJsFile($extJsParam.setJsFile(':celJS/initCelements.min.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/xwiki.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/scriptaculous/effects.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/widgets/modalPopup.js'))## From b9b8819e5e437c64745f91b299c40d104c8c6860 Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Tue, 10 Mar 2026 10:35:46 +0100 Subject: [PATCH 02/56] replace xwiki.get('...').use --- src/main/webapp/templates/createinline.vm | 8 +++++--- src/main/webapp/templates/javascript.vm | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/webapp/templates/createinline.vm b/src/main/webapp/templates/createinline.vm index b239ae40f..1d245a418 100644 --- a/src/main/webapp/templates/createinline.vm +++ b/src/main/webapp/templates/createinline.vm @@ -1,3 +1,5 @@ +#set($jsService = $services.javascript) +#set($extJsParam = $jsService.createExtJSParam().setAction('file')) ## --------------------------------------------------------------------------------------------------------- ## Since this template can be used for creating a Page or a Space, check the passed "tocreate" parameter ## which can be either "page" or "space". If no "tocreate" parameter is passed then we default to creating a Page. @@ -127,8 +129,8 @@ ## --------------------------------------------------------------------------------------------------------- ## Output JavaScript validation code ## --------------------------------------------------------------------------------------------------------- -$xwiki.get('jsfx').use('uicomponents/widgets/validation/livevalidation_prototype.js')## -$xwiki.get('ssfx').use('uicomponents/widgets/validation/livevalidation.css')## +$!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/validation/livevalidation_prototype.js'))## +$services.css.includeCSSPage(':uicomponents/widgets/validation/livevalidation.css')## #if(($xcontext.action=="inline")||($xcontext.action=="edit") || ($xcontext.action=="admin")) $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/validation/livevalidation_prototype.js'))## -$xwiki.get('ssfx').use('uicomponents/widgets/validation/livevalidation.css', true) +$services.css.includeCSSPage(':uicomponents/widgets/validation/livevalidation.css')## $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/compatibility.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':celDynJS/DynamicLoader/celLazyLoader.mjs'))## $!services.javascript.getAllExternalJavaScriptFiles() From 7306933667ce083c92b99a815ad851fbe7069cda Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Tue, 10 Mar 2026 11:46:01 +0100 Subject: [PATCH 03/56] remove unused xwiki-sheets and move xwiki-js-misc to disc --- .../Panels/ClassEditorWelcome.xml | 304 +- .../celements2web/Panels/ClassSwitcher.xml | 405 +-- .../docs/xwiki/XWiki/AdminExportSheet.xml | 29 - .../xwiki/XWiki/AdminFieldsDisplaySheet.xml | 79 - .../docs/xwiki/XWiki/AdminGeneralSheet.xml | 35 - .../docs/xwiki/XWiki/AdminGroupsSheet.xml | 119 - .../docs/xwiki/XWiki/AdminImportSheet.xml | 30 - .../docs/xwiki/XWiki/AdminInlineSheet.xml | 73 - .../xwiki/XWiki/AdminPresentationSheet.xml | 41 - .../xwiki/XWiki/AdminProgrammingSheet.xml | 33 - .../xwiki/XWiki/AdminRegistrationSheet.xml | 33 - .../docs/xwiki/XWiki/AdminRightsSheet.xml | 30 - .../webapp/docs/xwiki/XWiki/AdminSheet.xml | 2918 ----------------- .../docs/xwiki/XWiki/AdminTemplatesSheet.xml | 52 - .../docs/xwiki/XWiki/AdminUsersSheet.xml | 123 - .../docs/xwiki/XWiki/ConfigurableClass.xml | 938 ------ .../xwiki/XWiki/XWikiUserPreferencesSheet.xml | 64 - .../xwiki/XWiki/XWikiUserProfileSheet.xml | 112 - .../docs/xwiki/XWiki/XWikiUserSheet.xml | 445 --- .../docs/xwiki/XWiki/XWikiUserTemplate.xml | 25 - .../webapp/resources/js/xwiki/xwiki-misc.js | 16 + src/main/webapp/templates/editpanelsvars.vm | 4 +- src/main/webapp/templates/javascript.vm | 1 + 23 files changed, 323 insertions(+), 5586 deletions(-) delete mode 100644 src/main/webapp/docs/xwiki/XWiki/AdminExportSheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/AdminFieldsDisplaySheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/AdminGeneralSheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/AdminGroupsSheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/AdminImportSheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/AdminInlineSheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/AdminPresentationSheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/AdminProgrammingSheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/AdminRegistrationSheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/AdminRightsSheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/AdminSheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/AdminTemplatesSheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/AdminUsersSheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/ConfigurableClass.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/XWikiUserPreferencesSheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/XWikiUserProfileSheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/XWikiUserSheet.xml delete mode 100644 src/main/webapp/docs/xwiki/XWiki/XWikiUserTemplate.xml create mode 100644 src/main/webapp/resources/js/xwiki/xwiki-misc.js diff --git a/src/main/webapp/docs/celements2web/Panels/ClassEditorWelcome.xml b/src/main/webapp/docs/celements2web/Panels/ClassEditorWelcome.xml index f9978efbc..a7707ea56 100644 --- a/src/main/webapp/docs/celements2web/Panels/ClassEditorWelcome.xml +++ b/src/main/webapp/docs/celements2web/Panels/ClassEditorWelcome.xml @@ -1,156 +1,158 @@ -Panels -ClassEditorWelcome - -en -0 -Panels.WebHome -XWiki.Admin -xwiki:XWiki.msladek - -xwiki:XWiki.msladek -1154086211000 -1539796412000 -1539796412000 -1.1 - - - - -Imported from XAR -false -xwiki/1.0 -false - - -Panels.PanelClass - - - - - - - - -0 -0 -select -0 -category -5 -Category -0 - - ,| -1 -0 -Information|Navigation|Tools|Administration|Other -com.xpn.xwiki.objects.classes.StaticListClass - - -0 -Text -content -4 -Content -25 -60 -0 -com.xpn.xwiki.objects.classes.TextAreaClass - - -0 -Text -description -3 -Description -5 -40 -0 -com.xpn.xwiki.objects.classes.TextAreaClass - - -0 -name -1 -Name -40 -0 -com.xpn.xwiki.objects.classes.StringClass - - -0 -0 -select -0 -type -2 -Panel type -0 - - ,| -1 -0 -view|edit -com.xpn.xwiki.objects.classes.StaticListClass - - -Panels.ClassEditorWelcome -0 -Panels.PanelClass -5f54f197-af72-47c8-879a-c602defc559b - -Information - - -#largepanelheader($msg.get("classEditorIntro")) -##$xwiki.jsx.use('Panels.ClassSwitcher')## -<p>$msg.get("xe.panels.classedit.youare") <strong>${doc.fullName}</strong>. $msg.get("xe.panels.classedit.chooseproperty")</p> -<div> -<form id="changeclass" method="post" action="$doc.getURL("redirect")"> -<div> -<select id="classname" name="xredirect" size="1"> -<option value="-">Edit another class</option> -## -## Existing classes are enumerated, grouped by space name. -## The list is already sorted alphabetically -## -#set($prevSpace = "") -#set($optGroupOpen = false) -#foreach ($classname in $xwiki.classList) - #if($!xwiki.hasAccessLevel("edit", $classname)) - #set($classdoc = $xwiki.getDocument($classname)) - #if($classdoc.space != $prevSpace) - #if($optGroupOpen) + Panels + ClassEditorWelcome + + en + 0 + Panels.WebHome + XWiki.Admin + xwiki:XWiki.msladek + + xwiki:XWiki.msladek + 1154086211000 + 1539796412000 + 1539796412000 + 1.1 + + + + + Imported from XAR + false + xwiki/1.0 + false + + + Panels.PanelClass + + + + + + + + + 0 + 0 + select + 0 + category + 5 + Category + 0 + + ,| + 1 + 0 + Information|Navigation|Tools|Administration|Other + com.xpn.xwiki.objects.classes.StaticListClass + + + 0 + Text + content + 4 + Content + 25 + 60 + 0 + com.xpn.xwiki.objects.classes.TextAreaClass + + + 0 + Text + description + 3 + Description + 5 + 40 + 0 + com.xpn.xwiki.objects.classes.TextAreaClass + + + 0 + name + 1 + Name + 40 + 0 + com.xpn.xwiki.objects.classes.StringClass + + + 0 + 0 + select + 0 + type + 2 + Panel type + 0 + + ,| + 1 + 0 + view|edit + com.xpn.xwiki.objects.classes.StaticListClass + + + Panels.ClassEditorWelcome + 0 + Panels.PanelClass + 5f54f197-af72-47c8-879a-c602defc559b + + Information + + + #largepanelheader($msg.get("classEditorIntro")) + <p>$msg.get("xe.panels.classedit.youare") <strong>${doc.fullName}</strong>. + $msg.get("xe.panels.classedit.chooseproperty")</p> + <div> + <form id="changeclass" method="post" action="$doc.getURL("redirect")"> + <div> + <select id="classname" name="xredirect" size="1"> + <option value="-">Edit another class</option> + ## + ## Existing classes are enumerated, grouped by space name. + ## The list is already sorted alphabetically + ## + #set($prevSpace = "") + #set($optGroupOpen = false) + #foreach ($classname in $xwiki.classList) + #if($!xwiki.hasAccessLevel("edit", $classname)) + #set($classdoc = $xwiki.getDocument($classname)) + #if($classdoc.space != $prevSpace) + #if($optGroupOpen) </optgroup> - #else + #else #set($optGroupOpen = true) - #end - <optgroup label="$classdoc.space"> - #set($prevSpace = $classdoc.space) - #end - <option value="$classdoc.getURL("edit", "editor=class")">$classdoc.name</option> - #end -#end -#if($optGroupOpen) + #end + <optgroup label="$classdoc.space"> + #set($prevSpace = $classdoc.space) + #end + <option value="$classdoc.getURL("edit", "editor=class")">$classdoc.name</option> + #end + #end + #if($optGroupOpen) </optgroup> -#end -</select> -<span class="buttonwrapper"><input class="button" type="submit" value="$msg.get("changeclass")"/></span></div> -#warning($msg.get('xe.panels.classedit.unsavedchanges')) -</form> -</div> -#panelfooter() - - -Class Editor welcome and brief information message. - - -Class Editor Welcome - - -edit - - -#includeForm("Panels.PanelSheet") + #end + </select> + <span class="buttonwrapper"><input class="button" type="submit" + value="$msg.get("changeclass")"/></span></div> + #warning($msg.get('xe.panels.classedit.unsavedchanges')) + </form> + </div> + #panelfooter() + + + Class Editor welcome and brief information message. + + + Class Editor Welcome + + + edit + + + #includeForm("Panels.PanelSheet") + diff --git a/src/main/webapp/docs/celements2web/Panels/ClassSwitcher.xml b/src/main/webapp/docs/celements2web/Panels/ClassSwitcher.xml index 7ce7d06f8..2ebb8509c 100644 --- a/src/main/webapp/docs/celements2web/Panels/ClassSwitcher.xml +++ b/src/main/webapp/docs/celements2web/Panels/ClassSwitcher.xml @@ -1,259 +1,156 @@ -Panels -ClassSwitcher - -en -0 -Panels.WebHome -XWiki.Admin -xwiki:XWiki.msladek - -xwiki:XWiki.msladek -1154079605000 -1539796411000 -1539796411000 -1.1 - - - - -Imported from XAR -false -xwiki/1.0 -false - - -Panels.PanelClass - - - - - - - - -0 -0 -select -0 -category -5 -Category -0 - - ,| -1 -0 -Information|Navigation|Tools|Administration|Other -com.xpn.xwiki.objects.classes.StaticListClass - - -0 -Text -content -4 -Content -25 -60 -0 -com.xpn.xwiki.objects.classes.TextAreaClass - - -0 -Text -description -3 -Description -5 -40 -0 -com.xpn.xwiki.objects.classes.TextAreaClass - - -0 -name -1 -Name -40 -0 -com.xpn.xwiki.objects.classes.StringClass - - -0 -0 -select -0 -type -2 -Panel type -0 - - ,| -1 -0 -view|edit -com.xpn.xwiki.objects.classes.StaticListClass - - -Panels.ClassSwitcher -0 -Panels.PanelClass -32c7090e-d98d-415f-965d-b3319b10cca7 - -Tools - - -#largepanelheader('Class Switcher') -##$xwiki.jsx.use('Panels.ClassSwitcher')## -<div> -<form id="changeclass" method="post" action="$doc.getURL("redirect")"> -<div> -<select id="classname" name="xredirect" size="1"> -<option value="-">Edit another class</option> -## -## Existing classes are enumerated, grouped by space name. -## The list is already sorted alphabetically -## -#set($prevSpace = "") -#set($optGroupOpen = false) -#foreach ($classname in $xwiki.classList) - #if($!xwiki.hasAccessLevel("edit", $classname)) - #set($classdoc = $xwiki.getDocument($classname)) - #if($classdoc.space != $prevSpace) - #if($optGroupOpen) + Panels + ClassSwitcher + + en + 0 + Panels.WebHome + XWiki.Admin + xwiki:XWiki.msladek + + xwiki:XWiki.msladek + 1154079605000 + 1539796411000 + 1539796411000 + 1.1 + + + + + Imported from XAR + false + xwiki/1.0 + false + + + Panels.PanelClass + + + + + + + + + 0 + 0 + select + 0 + category + 5 + Category + 0 + + ,| + 1 + 0 + Information|Navigation|Tools|Administration|Other + com.xpn.xwiki.objects.classes.StaticListClass + + + 0 + Text + content + 4 + Content + 25 + 60 + 0 + com.xpn.xwiki.objects.classes.TextAreaClass + + + 0 + Text + description + 3 + Description + 5 + 40 + 0 + com.xpn.xwiki.objects.classes.TextAreaClass + + + 0 + name + 1 + Name + 40 + 0 + com.xpn.xwiki.objects.classes.StringClass + + + 0 + 0 + select + 0 + type + 2 + Panel type + 0 + + ,| + 1 + 0 + view|edit + com.xpn.xwiki.objects.classes.StaticListClass + + + Panels.ClassSwitcher + 0 + Panels.PanelClass + 32c7090e-d98d-415f-965d-b3319b10cca7 + + Tools + + + #largepanelheader('Class Switcher') + <div> + <form id="changeclass" method="post" action="$doc.getURL("redirect")"> + <div> + <select id="classname" name="xredirect" size="1"> + <option value="-">Edit another class</option> + ## + ## Existing classes are enumerated, grouped by space name. + ## The list is already sorted alphabetically + ## + #set($prevSpace = "") + #set($optGroupOpen = false) + #foreach ($classname in $xwiki.classList) + #if($!xwiki.hasAccessLevel("edit", $classname)) + #set($classdoc = $xwiki.getDocument($classname)) + #if($classdoc.space != $prevSpace) + #if($optGroupOpen) </optgroup> - #else + #else #set($optGroupOpen = true) - #end - <optgroup label="$classdoc.space"> - #set($prevSpace = $classdoc.space) - #end - <option value="$classdoc.getURL("edit", "editor=class")">$classdoc.name</option> - #end -#end -#if($optGroupOpen) + #end + <optgroup label="$classdoc.space"> + #set($prevSpace = $classdoc.space) + #end + <option value="$classdoc.getURL("edit", "editor=class")">$classdoc.name</option> + #end + #end + #if($optGroupOpen) </optgroup> -#end -</select> -<span class="buttonwrapper"><input class="button" type="submit" value="$msg.get("changeclass")"/></span></div> -#warning($msg.get('xe.panels.classedit.unsavedchanges')) -</form> -</div> -#panelfooter() - - -Form that allows choosing the class for the object to be added to the current document. - - -Class Switcher - - -edit - - - - -XWiki.JavaScriptExtension - - - - - - - - -0 -0 -select -0 -cache -5 -Caching policy -0 - - ,| -1 -0 -long|short|default|forbid -com.xpn.xwiki.objects.classes.StaticListClass - - -0 -code -2 -Code -20 -50 -0 -com.xpn.xwiki.objects.classes.TextAreaClass - - -0 -name -1 -Name -30 -0 -com.xpn.xwiki.objects.classes.StringClass - - -0 -select -yesno -parse -4 -Parse content -0 -com.xpn.xwiki.objects.classes.BooleanClass - - -0 -0 -select -0 -use -3 -Use this extension -0 - - ,| -1 -0 -onDemand=On demand|always=Always -com.xpn.xwiki.objects.classes.StaticListClass - - -Panels.ClassSwitcher -0 -XWiki.JavaScriptExtension -951b5864-df3e-46d0-bdbe-bac923e58dc8 - -long - - -document.observe('dom:loaded', function() { - var switcher = $('classname'); - if(typeof (switcher) != 'undefined') { - switcher.observe('change', function() { - var value = this.options[this.selectedIndex].value; - if (value != '-') { - window.self.location = value; - } - }.bindAsEventListener(switcher)); - switcher.up('form').down("input[type='submit']").hide(); - } -}); - - - -Instant class switcher - - -0 - - -onDemand - - -#includeForm("Panels.PanelSheet") + #end + </select> + <span class="buttonwrapper"><input class="button" type="submit" + value="$msg.get("changeclass")"/></span></div> + #warning($msg.get('xe.panels.classedit.unsavedchanges')) + </form> + </div> + #panelfooter() + + + Form that allows choosing the class for the object to be added to the current document. + + + Class Switcher + + + edit + + + #includeForm("Panels.PanelSheet") + diff --git a/src/main/webapp/docs/xwiki/XWiki/AdminExportSheet.xml b/src/main/webapp/docs/xwiki/XWiki/AdminExportSheet.xml deleted file mode 100644 index fa6236c5a..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/AdminExportSheet.xml +++ /dev/null @@ -1,29 +0,0 @@ - - -XWiki -AdminExportSheet - -en -0 -XWiki.AdminSheet -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1211800201000 -1212569607000 -1213892723000 -1.1 -AdminExportSheet - - - -Imported from XAR -false -xwiki/2.0 -false -{{velocity}} -{{html}} -#template('exportinline.vm') -{{/html}} -{{/velocity}} diff --git a/src/main/webapp/docs/xwiki/XWiki/AdminFieldsDisplaySheet.xml b/src/main/webapp/docs/xwiki/XWiki/AdminFieldsDisplaySheet.xml deleted file mode 100644 index fdfb0bcb4..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/AdminFieldsDisplaySheet.xml +++ /dev/null @@ -1,79 +0,0 @@ - - -XWiki -AdminFieldsDisplaySheet - -en -0 -XWiki.AdminSheet -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1211800243000 -1275386737000 -1275386737000 -1.1 -AdminFieldsDisplaySheet - - - -Imported from XAR -false -xwiki/2.0 -false -{{velocity}} -### Sheet used to generically display the XWikiPreferences object fields in the administration sheets. -#if ("$!section" != '') - ## clean="false" due to bug #XWIKI-4122 - the <legend> element is dropped. - {{html clean="false"}} - <form id="$section.toLowerCase()" method="post" action="$xwiki.getURL($currentDoc, 'saveandcontinue')" onsubmit="cancelCancelEdit()"> - #foreach ($item in $legend) - #set ($fields = $params.get($item)) - <fieldset class="$item"> - #if($legend.size() > 1) - <legend>$msg.get("admin.${item}")</legend> - #end - #foreach($field in $fields) - #set($prop = $obj.xWikiClass.get($field)) - #set($title = $msg.get($field)) - #if ($title == $field && $prop) - #set ($title = $!prop.prettyName) - #end - <p> - <label #if($prop)for="${prefsclassname}_${obj.number}_${prop.name}"#end class="$field">$title - #if($field == 'skin') - #set ($skin = $xwiki.skin) - #if ($skin.indexOf('.') != -1) - &nbsp;<span class="buttonwrapper"><a href="$xwiki.getURL($skin)">$msg.get('admin.customize')</a></span> - #end - #end - #if($field == 'colorTheme') - #set ($colorThemeName = $xwiki.getXWikiPreference('colorTheme')) - #if ($colorThemeName.indexOf('.') != -1) - &nbsp;<span class="buttonwrapper"><a href="$xwiki.getURL($colorThemeName, 'inline')">$msg.get('admin.customize')</a></span> - #end - #end - </label> - #if ($prop) - $doc.displayEdit($prop, "${prefsclassname}_${obj.number}_", $obj) - #end - </p> - #end - </fieldset> - #end - <div class="hidden"> - <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" /> - <input type="hidden" name="xcontinue" value="$xwiki.getURL($currentDoc, 'admin', "editor=${escapetool.url(${editor})}&amp;section=${escapetool.url(${section})}&amp;space=${escapetool.url(${currentSpace})}")" /> - <input type="hidden" name="xredirect" value="$xwiki.getURL($currentDoc, 'admin', "editor=${escapetool.url(${editor})}&amp;section=${escapetool.url(${section})}&amp;space=${escapetool.url(${currentSpace})}")" /> - <input type="hidden" name="classname" value="XWiki.XWikiPreferences" /> - </div> - <div class="bottombuttons"> - <p class="admin-buttons"> - <span class="buttonwrapper"><input class="button" type="submit" name="formactionsac" value="$msg.get('admin.save')" /></span> - </p> - </div> ## bottombuttons - </form> - {{/html}} -#end -{{/velocity}} diff --git a/src/main/webapp/docs/xwiki/XWiki/AdminGeneralSheet.xml b/src/main/webapp/docs/xwiki/XWiki/AdminGeneralSheet.xml deleted file mode 100644 index ae4b01e2c..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/AdminGeneralSheet.xml +++ /dev/null @@ -1,35 +0,0 @@ - - -XWiki -AdminGeneralSheet - -en -0 -XWiki.AdminSheet -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1211800256000 -1240316643000 -1240316643000 -1.1 -AdminGeneralSheet - - - -Imported from XAR -false -xwiki/2.0 -false -{{velocity output="false"}} -### Administrate general wiki preferences, at global level -#set($legend = ['language', 'editor', 'admin', 'smtp']) -#set($params = $util.hashMap) -#set($params.language = ['multilingual', 'languages' , 'default_language', 'dateformat']) -#set($params.editor = ['editor', 'core.defaultDocumentSyntax', 'xwiki.title.mandatory']) -#set($params.admin = ['admin_email']) -#set($params.smtp = ['smtp_server', 'smtp_port', 'smtp_server_username', 'smtp_server_password', 'javamail_extra_props']) -{{/velocity}} - -{{include document="XWiki.AdminFieldsDisplaySheet" /}} diff --git a/src/main/webapp/docs/xwiki/XWiki/AdminGroupsSheet.xml b/src/main/webapp/docs/xwiki/XWiki/AdminGroupsSheet.xml deleted file mode 100644 index 467291b42..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/AdminGroupsSheet.xml +++ /dev/null @@ -1,119 +0,0 @@ - - -XWiki -AdminGroupsSheet - -en -0 -XWiki.AdminSheet -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1211800831000 -1267456765000 -1267456765000 -1.1 -AdminGroupsSheet - - - -Imported from XAR -false -xwiki/2.0 -false -{{velocity}} -### Globally administrate the groups in a wiki. -#set($formname = "update") -#set($saveaction = "save") -## -## Inject needed JS and CSS files -## -#set($jsService = $services.javascript) -#set($extJsParam = $jsService.createExtJSParam().setAction('file')) -#set($extJsParam = $extJsParam.setLazyLoad(true)) -$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/lightbox/lightbox.js'))## -$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/usersandgroups/usersandgroups.js'))## -$services.css.includeCSSPage(':js/xwiki/usersandgroups/usersandgroups.css')## -$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/table/livetable.js'))## -$services.css.includeCSSPage(':js/xwiki/table/livetable.css')## -## -## url to get the groups for displaying them in the ajax-based table -## -#set($url = $doc.getURL('get', 'xpage=getgroups')) -#if($xcontext.database != "xwiki") - #set($mainwk = false) -#else - #set($mainwk = true) -#end -{{html}} -<div id="xwikieditcontent"> - <table id="groupstable" class="xwiki-livetable"> - <tr> - <td class="xwiki-livetable-pagination" colspan="2"> - <span id="groupstable-limits" class="xwiki-livetable-limits"></span> - <span id="groupstable-ajax-loader" class="xwiki-livetable-loader"><img src="$xwiki.getSkinFile('icons/ajax-loader.gif')" alt="$msg.get('xe.livetable.loading')" title="" />$msg.get("xe.livetable.loading")</span> - <span class="pagination"> - <span id="groupstable-pagination-text" class="xwiki-livetable-pagination-text">$msg.get("xe.pagination.page")</span> - <span id="groupstable-pagination" class="xwiki-livetable-pagination-content" ></span> - </span> - </td> - </tr> - <tr> - <td class="xwiki-livetable-display-container"> - <table class="xwiki-livetable-display"> - <thead class="xwiki-livetable-display-header"> - <tr> - <th class="xwiki-livetable-display-header-text" scope="col">$msg.get("xe.admin.groups.groupname")</th> - <th class="xwiki-livetable-display-header-text" scope="col">$msg.get("xe.admin.groups.members")</th> - <th class="xwiki-livetable-display-header-text" scope="col">$msg.get("xe.admin.groups.manage")</th> - </tr> - <tr id="groupstable-filters" class="xwiki-livetable-display-filters"> - <td class="xwiki-livetable-display-header-filter"><label for="name" class="hidden">$msg.get("xe.admin.groups.filter.groupName")</label><input id="name" name="name" type="text" class="filter"/></td> - <td class="xwiki-livetable-display-header-filter"></td> - <td class="xwiki-livetable-display-header-filter"> - #if (!$mainwk) - <label for="wiki" class="hidden">$msg.get("xe.admin.groups.filter.scope")</label> - <select name="wiki" class="filter"> - <option value="local" selected="selected">$msg.get("xe.admin.groups.local")</option> - <option value="global">$msg.get("xe.admin.groups.global")</option> - <option value="both">$msg.get("xe.admin.groups.both")</option> - </select> - #else - <input type="hidden" value="local" name="wiki" /> - #end - </td> - </tr> - </thead> - <tbody id="groupstable-display" class="xwiki-livetable-display-body"><tr><td>&nbsp;</td></tr></tbody> - </table> - </td> - </tr> - <tr> - <td id="tdAddNewUserOrGroup"> - <span class="buttonwrapper"><a href="#" id="addNewGroup">$msg.get("rightsmanager.addnewgroup")</a></span> - </td> - </tr> - </table> - #set($addnewurl = $xwiki.getURL("XWiki.XWikiGroups", "view", "xpage=addnewgroup")) - #set($saveurl = $xwiki.getURL("XWiki.XWikiGroups", "view")) - #set($redirecturl = $xwiki.getDocument("XWiki.XWikiPreferences").getURL("admin", "editor=${editor}&section=Groups")) - <script type="text/javascript"> - //<![CDATA[ - (function() { - var startup = function() { - var callback = function(row, i, table) { return displayGroups(row, i, table, "$!{services.csrf.getToken()}"); }; - var ta = new XWiki.widgets.LiveTable("$url", "groupstable", callback); - Event.observe($('addNewGroup'), "click", makeAddHandler("$addnewurl", "$saveurl", "$redirecturl")); - } - if ((typeof(XWiki) != 'undefined') && (typeof(XWiki.widgets) != 'undefined') && (typeof(XWiki.widgets.LiveTable) != 'undefined')) { - startup(); - } else { - document.observe('xwiki:dom:loading', startup); - } - })(); - //]]> - </script> -</div> ## xwikieditcontent -{{/html}} -{{/velocity}} diff --git a/src/main/webapp/docs/xwiki/XWiki/AdminImportSheet.xml b/src/main/webapp/docs/xwiki/XWiki/AdminImportSheet.xml deleted file mode 100644 index bafc3e35e..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/AdminImportSheet.xml +++ /dev/null @@ -1,30 +0,0 @@ - - -XWiki -AdminImportSheet - -en -0 -XWiki.AdminSheet -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1211801093000 -1212569671000 -1213892723000 -1.1 -AdminImportSheet - - - -Imported from XAR -false -xwiki/2.0 -false -{{velocity}} -## Administrate the wiki import. -{{html}} -#template('importinline.vm') -{{/html}} -{{/velocity}} diff --git a/src/main/webapp/docs/xwiki/XWiki/AdminInlineSheet.xml b/src/main/webapp/docs/xwiki/XWiki/AdminInlineSheet.xml deleted file mode 100644 index d918c1760..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/AdminInlineSheet.xml +++ /dev/null @@ -1,73 +0,0 @@ - - -XWiki -AdminInlineSheet - -en -0 -XWiki.AdminSheet -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1212747498000 -1213088015000 -1213892723000 -1.1 -AdminInlineSheet - - - -Imported from XAR -false -xwiki/2.0 -false -{{velocity}}###---------------------------------- -## modified version of editinline.vm -###---------------------------------- -#if ($doc.fullName != 'XWiki.AdminInlineSheet') ## Prevents infinite loops - #set($formname = 'inline') - #set($saveaction = 'save') - #set($previewenabled = true) - #set($xnotification = $!request.getParameter('xnotification')) - {{html}} - <form id="inline" method="post" action="$doc.getURL('preview')"> - <div> - <div class="hidden"><input type="hidden" name="xcontinue" value="$doc.getURL('admin', "${request.queryString}&editmode=inline").replaceAll('&','&amp;')" /></div> - <input type="hidden" name="xredirect" value="$doc.getURL('admin', "editor=${editor}&section=${section}&space=XWiki").replaceAll('&','&amp;')" /> - <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" /> - <input type="hidden" name="xnotification" value="$!xnotification" /> - <input type="hidden" name="template" value="$!request.template" /> - <input type="hidden" name="language" value="$!doc.language" /> - #if("$!request.parent" != '') - <input type="hidden" name="parent" value="$!request.parent" /> - #end - #if("$!request.title" != "") - <input type="hidden" name="title" value="$!request.title" /> - #end - #set($force = $!request.get('force')) - #if(($doc.getLocked() == true) && (!$force)) ## locking - <div> - $msg.get('doclockedby') $xwiki.getLocalUserName($doc.getLockingUser()). <br /> - <a href="$doc.getURL('inline', "$!request.getQueryString()&force=1")">$msg.get('forcelock')</a> - </div> - #else - #foreach($class in $doc.xWikiClasses) - #set($nb = $doc.getObjectNumbers("${class.name}")) - <input type="hidden" name="${class.name}_nb" value="$nb" /> - #end - $doc.getTranslatedDocument().getRenderedContent() - <div class="bottombuttons"> - <p class="admin-buttons"> - <span class="buttonwrapper"><input class="button" type="submit" name="formactioncancel" value="$msg.get('cancel')" onclick="document.forms.update.action='$doc.getURL('cancel')'; if (document.forms.update.onsubmit) document.forms.update.onsubmit();" /></span> - <span class="buttonwrapper"><input class="button" type="submit" name="formactionsac" value="$msg.get('saveandcontinue')" onclick="document.forms.update.action='$doc.getURL('saveandcontinue')'; if (document.forms.update.onsubmit) document.forms.update.onsubmit();if(checkDocumentContent()) document.forms.update.submit(); return false;" /></span> - <span class="buttonwrapper"><input class="button" type="submit" name="formactionsave" value="$msg.get('saveandview')" onclick="document.forms.update.action='$doc.getURL('saveandview')'; if (document.forms.update.onsubmit) document.forms.update.onsubmit();if(checkDocumentContent()) document.forms.update.submit(); return false;" /></span> - </p> - </div> ## bottombuttons - #end - </div> ## form - </form> - #template('textarea_wysiwyg.vm') - {{html}} -#end -{{/velocity}} diff --git a/src/main/webapp/docs/xwiki/XWiki/AdminPresentationSheet.xml b/src/main/webapp/docs/xwiki/XWiki/AdminPresentationSheet.xml deleted file mode 100644 index d5d8677dc..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/AdminPresentationSheet.xml +++ /dev/null @@ -1,41 +0,0 @@ - - -XWiki -AdminPresentationSheet - -en -0 -XWiki.AdminSheet -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1211800290000 -1214047286000 -1214047286000 -1.1 -AdminPresentationSheet - - - -Imported from XAR -false -xwiki/2.0 -false -{{velocity output="false"}} -### Administrate the presentation preferences globally and at space level. -#if("$!editor" == 'globaladmin') - #set($legend = ['header', 'panels', 'footer', 'skin']) -#else - #set($legend = ['header', 'panels', 'skin']) -#end -#set($params = $util.hashMap) -#set($params.header = ['title', 'meta']) -#set($params.panels = ['showLeftPanels', 'leftPanels', 'showRightPanels', 'rightPanels']) -#set($params.skin = ['skin', 'colorTheme', 'stylesheet', 'stylesheets']) -#if("$!editor" == 'globaladmin') - #set($params.footer = ['webcopyright', 'version']) -#end -{{/velocity}} - -{{include document="XWiki.AdminFieldsDisplaySheet" /}} diff --git a/src/main/webapp/docs/xwiki/XWiki/AdminProgrammingSheet.xml b/src/main/webapp/docs/xwiki/XWiki/AdminProgrammingSheet.xml deleted file mode 100644 index a61ee7977..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/AdminProgrammingSheet.xml +++ /dev/null @@ -1,33 +0,0 @@ - - -XWiki -AdminProgrammingSheet - -en -0 -XWiki.AdminSheet -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1211801263000 -1212569686000 -1213892723000 -1.1 -AdminProgrammingSheet - - - -Imported from XAR -false -xwiki/2.0 -false -{{velocity output="false"}} -### Globally administrate the programming preferences. -#set($legend = ['programming']) -#set($params = $util.hashMap) -#set($params.programming = ['macros_languages', 'macros_velocity', 'macros_groovy', 'macros_mapping', 'notification_pages', 'documentBundles']) -{{/velocity}} - -{{include document="XWiki.AdminFieldsDisplaySheet" /}} - diff --git a/src/main/webapp/docs/xwiki/XWiki/AdminRegistrationSheet.xml b/src/main/webapp/docs/xwiki/XWiki/AdminRegistrationSheet.xml deleted file mode 100644 index cbdc5317d..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/AdminRegistrationSheet.xml +++ /dev/null @@ -1,33 +0,0 @@ - - -XWiki -AdminRegistrationSheet - -en -0 -XWiki.AdminSheet -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1211801310000 -1212568742000 -1213892723000 -1.1 -AdminRegistrationSheet - - - -Imported from XAR -false -xwiki/2.0 -false -{{velocity output="false"}} -### Globally administrate the registration of new users in a wiki. -#set($legend = ['registration']) -#set($params = $util.hashMap) -#set($params.registration = ['use_email_verification', 'auth_active_check', 'validation_email_content', 'confirmation_email_content', 'invitation_email_content']) -{{/velocity}} - -{{include document="XWiki.AdminFieldsDisplaySheet" /}} - diff --git a/src/main/webapp/docs/xwiki/XWiki/AdminRightsSheet.xml b/src/main/webapp/docs/xwiki/XWiki/AdminRightsSheet.xml deleted file mode 100644 index de8131d59..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/AdminRightsSheet.xml +++ /dev/null @@ -1,30 +0,0 @@ - - -XWiki -AdminRightsSheet - -en -0 -XWiki.AdminSheet -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1211801338000 -1213904460000 -1213904460000 -1.1 -AdminRightsSheet - - - -Imported from XAR -false -xwiki/2.0 -false -{{velocity}} -### Administrate the rights in a wiki (globally or per space). -{{html}} -#template('rightsUI.vm') -{{/html}} -{{/velocity}} diff --git a/src/main/webapp/docs/xwiki/XWiki/AdminSheet.xml b/src/main/webapp/docs/xwiki/XWiki/AdminSheet.xml deleted file mode 100644 index 00f36fed7..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/AdminSheet.xml +++ /dev/null @@ -1,2918 +0,0 @@ - - -XWiki -AdminSheet - -en -0 -XWiki.XWikiPreferences -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1211801518000 -1294164055000 -1294164055000 -1.1 -AdminSheet - - - -Imported from XAR -false -xwiki/2.0 -false -general.png -14651 -XWiki.Admin -1284772798000 -1.1 -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 -YII= - -registration.png -12871 -XWiki.Admin -1284772797000 -1.1 -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 - -users.png -10532 -XWiki.Admin -1284772797000 -1.1 -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 - -export.png -16654 -XWiki.Admin -1284772798000 -1.1 -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 -AABJRU5ErkJggg== - -presentation.png -13548 -XWiki.Admin -1284772798000 -1.1 -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 - -templates.png -5760 -XWiki.Admin -1284772798000 -1.1 -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 -QmCC - -groups.png -13294 -XWiki.Admin -1284772798000 -1.1 -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 -FwAAAABJRU5ErkJggg== - -programming.png -15690 -XWiki.Admin -1284772797000 -1.1 -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 -mcs8AAAAAElFTkSuQmCC - -import.png -17661 -XWiki.Admin -1284772797000 -1.1 -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 - -rights.png -13595 -XWiki.Admin -1284772797000 -1.1 -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 -WAP4i9ywscF/axyXL5fOHAQAAAAASUVORK5CYII= - - -XWiki.AdminSheet -0 -XWiki.JavaScriptExtension -4e754542-66c4-41c6-816a-96ed94c54205 - -long - - -/* Administration application custom JavaScript */ - -function showAdminSections(e) { - $('admin-page-menu').style.display = "none"; - rmClass($('admin-page-menu'), "hidden"); - toggleClass($('showsectionswrapper'), "hidden"); - toggleClass($('hidesectionswrapper'), "hidden"); - if (!eltHasClass($('admin-page-menu'), "alreadyMoved")) { - $('admin-page-menu').parentNode.insertBefore($('admin-page-menu'), $('admin-page-content')); - addClass($('admin-page-menu'), "alreadyMoved"); - } - Effect.SlideDown('admin-page-menu', { duration: 0.7 }); - Event.stop(e); -} - -function hideAdminSections(e) { - toggleClass($('showsectionswrapper'), "hidden"); - toggleClass($('hidesectionswrapper'), "hidden"); - $('admin-page-menu').style.display = "none"; - Event.stop(e); -} - -function goTo(e) { - var select = $('goto-select'); - var i = select.selectedIndex; - if (window.location != select.options[i].value) { - window.location = select.options[i].value; - } -} - -Event.observe(window, 'load', function() { - if($('showsections')) { Event.observe($('showsections'), 'click', showAdminSections, false); } - if($('hidesections')) { Event.observe($('hidesections'), 'click', hideAdminSections, false); } - if($('goto-select')) { Event.observe($('goto-select'), 'change', goTo, false); } -}); -Administration application javascript - - -0 - - -onDemand - - - -XWiki.AdminSheet -0 -XWiki.StyleSheetExtension -672fe873-2dc7-4ae0-9826-fb75e67eb350 - -long - - -/* Override xwiki.js */ - -.hidden { - display: none !important; -} - -/* Override userandgroups.css */ - -.display td, #specialusersandgroups td { - border: 1px solid #7c7c7c !important; -} - -#userstable td, #groupstable td, #usersandgroupstable td, #alldocstable td { - border-color: transparent; -} - -#userstable, #groupstable, #usersandgroupstable, #alldocstable { - border-color: transparent; -} - -/* Additions */ - -#admin-page-header .submenuitem a, #admin-page-header .submenuitem a:link, #admin-page-header .submenuitem a:visited, #admin-page-header .submenuitem a:active { - display:block; - float: none; - width: 100%; - font-size:0.8em; - font-weight: bold; - text-decoration:none; - height:auto; - padding:2px 0 0 0; - line-height:1.2em; - border: 0; - text-align: left; - color:#FFF; -} - -#admin-page-header .submenuitem a:hover { - text-decoration: underline; - background-image: none; -} - -#admin-page-header { - color: #FFF; - padding-top: 5px; - padding-bottom: 5px; - background-color: #AFAFB5; -} - -.admin-page-header-spacer { - clear:both; - height:5px; -} - -h1#admin-header { - float:left; - line-height: 46px; - margin-left: 20px; - font-size: 2em; - font-weight: bold; - margin-top: 0px; - overflow:hidden; -} - -#change-context { - float:right; - margin-right:20px; - width:300px; - font-size:12px; - line-height: 22px; - text-align:right; -} - -#goto-globaladmin a { - color: #808085; - font-weight: bold; -} - -#admin-page-menu { - clear: both; - width: 100%; -} - -#admin-icons { - float: left; - width: 100%; - margin: 0px; -} - -#admin-icons li { - list-style-type: none; - display: inline-block; - width: 125px; - margin: 15px; - text-align: center; - vertical-align: top; -} -/* For IE6/7, which don't really understand inline-block on block elements */ -* html #admin-icons li { - display: inline; -} -*+html #admin-icons li { - display: inline; -} - -#admin-icons li a { - display: block; - background-position: 50% 0%; - background-repeat: no-repeat; - width: 124px; - font-weight: bold; - color: #808085; - text-decoration: none; -} - -#admin-icons li a img { - display: block; - height: 85px; - text-decoration: none; - border: 0; -} - -#admin-page { - width: 100%; -} - -#admin-page-content { - background-color: #F9F9F9; - margin: 0px auto; - margin-top: 10px; - padding: 5px; - clear: both; -} - -#if($xwiki.getBaseSkin() == "albatross") -h1#admin-header { - margin-bottom: 0px; -} - -#showsectionswrapper, #hidesectionswrapper { - float: right; - margin: 0px; -} - -.rightmenu .submenu .submenuitem { - border: 0px; - margin: 0px; - padding: 0px; -} - -.rightmenu #tmAdmin a strong { - padding: 0px !important; -} - -#admin-page .bottombuttons { - background: transparent !important; - margin: 0px auto !important; - margin-bottom: 10 px !important; -} - -.bottombuttons .buttonwrapper { - display: inline; -} -#end - -#admin-page-content #xwikieditcontent { - background-color: transparent; -} - -#admin-page-content fieldset { - border: 0px; - border-bottom: 3px solid #FFF; - margin-bottom: 10px; -} - -#admin-page-content fieldset p { - width: 80%; - display: block; - margin-bottom: 10px; - padding-left: 10px; - padding-right: 10px; -} - -#admin-page-content fieldset legend { - color: #606B72; - font-size: 1.5em; - font-weight: bold; - padding-top: 10px; - padding-left: 10px; -} - -p.legend { - width: auto !important; - padding: 0px; - margin: 0px; - color: #606B72; - font-size: 1.5em; - font-weight: bold; - margin-bottom: 10px; -} - -#admin-page-content fieldset p label { - width: 30% !important; - float: left; - color: #4A4A4B; - font-weight: bold; - clear: left; - margin-bottom: 10px; - padding-left: 10px; - padding-right: 10px; -} - -#admin-page-content fieldset p input, #admin-page-content fieldset p textarea { - width: 65%; - margin-left: 10px; - margin-bottom: 10px; -} - -/* Checkboxes are centered in some browsers without this. */ -#admin-page-content fieldset p input[type=checkbox] { - width: auto; - margin: 0 0 0 10px; -} - -#admin-page-content fieldset p select { - width: 30%; - margin-left: 10px; - margin-bottom: 10px; -} - -#goto-select { - clear:both; - width:290px; -} - -#goto-select optgroup { - margin: 6px; -} - -#usersandgroupstable-filters #name { - width: 65%; -} -Administration application stylesheet - - -1 - - -onDemand - - -{{velocity}} -##************************************************************************************************** -## Administration Sheet,used to display a common UI for some wiki features (presentation, users, -## groups, rights etc.) at global / space level and also for several applications. -##************************************************************************************************** -#if($xcontext.action == 'view') - $response.sendRedirect($xwiki.getURL($doc.getFullName(), 'admin', $request.getQueryString()))## -#else - ##---------------------------------------------------------------------------- - ## hard-coded links to app. admin pages which appear at global/space level - ## TODO: replace this when the new IX are ready - ##---------------------------------------------------------------------------- - #set($globalAppAdmin = ['Panels.PanelWizard', 'Photos.Links', 'XWiki.OfficeImporterAdmin']) - #set($spaceAppAdmin = ['Panels.PanelWizard']) - ##----------------------------------------------------------------------------- - ## some applications at space level (like Panel Wizard) might require a different type of - ## integration to allow users with space admin rights to use them, so they will have a - ## "/xwiki/bin/Space/WebPreferences?section=application" type of url, while some at global level - ## need to use a "/xwiki/admin/App/Settings" type of url, to be edited inline - ## inside the administration application UI. - ##------------------------------------------------------------------------------ - #set($hasAdminActionUrl = ['Photos.Links']) - #set($section = "$!{request.section}") - ##------------------------------------- - ## determine the displayed sections - ##------------------------------------- - #set($jsService = $services.javascript) - #set($extJsParam = $jsService.createExtJSParam().setAction('file')) - #set($extJsParam = $extJsParam.setLazyLoad(true)) - $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/scriptaculous/scriptaculous.js'))## -## $xwiki.jsx.use('XWiki.AdminSheet')## -## $xwiki.ssx.use('XWiki.AdminSheet')## - #if($editor == 'globaladmin') - #set($currentDoc = 'XWiki.XWikiPreferences') - #set($sections = ['General', 'Presentation', 'Registration', 'Programming', 'Rights', 'Users', 'Groups', 'Import', 'Export', 'Templates']) - #set($discard = $sections.addAll($globalAppAdmin)) - #elseif($editor == 'spaceadmin') - #set($currentDoc = "${currentSpace}.WebPreferences") - #set($sections = ['Presentation', 'Rights']) - #set($discard = $sections.addAll($spaceAppAdmin)) - #end - #if($section != '' && $section.indexOf('.') > 0) - #set($sectionname = $xwiki.getDocument($section).getDisplayTitle()) - #elseif($section != '') - ## If there is no translation (translated message is equals to key), don't display the message key, but the section name instead. - #if($msg.get("admin.${section.toLowerCase()}") != "admin.${section.toLowerCase()}") - #set($sectionname = $msg.get("admin.${section.toLowerCase()}")) - #else - #set($sectionname = $section) - #end - #end - ##----------------------------------------- - ## admin-page display - ##----------------------------------------- - {{html clean="false"}} - <div id="admin-page"> - <div id="admin-page-header"> - <div class="admin-page-header-spacer">&nbsp;</div> - <h1 id="admin-header">#if($section == '')$escapetool.xml($msg.get("admin.${editor}"))#else $escapetool.xml($sectionname)#end</h1> - <div id="change-context"> - <label for="goto-select" class="hidden">$msg.get('admin.placetoadminister')</label> - <select id="goto-select"> - #if ($xwiki.hasAccessLevel('admin', $xcontext.user, 'XWiki.XWikiPreferences')) - <optgroup label="$msg.get('admin.gotoglobaladministration')"> - <option value="$xwiki.getURL('XWiki.XWikiPreferences', 'admin')" #if("$!{editor}"=="globaladmin")selected="selected"#end>$msg.get('admin.globaladministration')</option> - </optgroup> - #end - <optgroup label="$msg.get('admin.gotospaceadministration')"> - #foreach($spaceitem in $xwiki.spaces) - #if ($xwiki.hasAccessLevel('admin', $xcontext.user, "${spaceitem}.WebPreferences")) - <option value="$xwiki.getURL("${spaceitem}.WebPreferences", 'admin')" #if("$!{currentSpace}" == ${spaceitem} && "$!{editor}" != 'globaladmin')selected="selected"#end>$escapetool.xml($spaceitem)</option> - #end - #end - </optgroup> - </select> - #if($section != '')<br/><span id="showsectionswrapper" class="buttonwrapper"><a id="showsections" href="$xwiki.getURL($currentDoc, 'admin')">$msg.get('admin.showsections')</a></span> - <span id="hidesectionswrapper" class="hidden buttonwrapper"><a id="hidesections" href="$xwiki.getURL($currentDoc, 'admin')">$msg.get('admin.hidesections')</a></span>#end - </div> ## change-context - <div class="admin-page-header-spacer">&nbsp;</div> - </div> ## admin-page-header - #if($section != '') - <div id="admin-page-content"> - <div class="$escapetool.xml($sectionname)"></div> - ##------------------------------------------------------------------------------------------------------------ - ## The Administration allows editing other pages from different applications inside the admin context (UI) - ##------------------------------------------------------------------------------------------------------------ - #if("$!{request.editmode}" == 'inline' && $xwiki.exists($section)) - $xcontext.setDisplayMode('edit') - {{include document="XWiki.AdminInlineSheet" /}} - ##includeForm('XWiki.AdminInlineSheet') - ##-------------------------------------------------------------------------------------------------------------- - ## The Administration app., along with its default sections, dynamically includes and display pages from apps. - ## (hard-coded links). TODO: replace the hard-coded links by Interface Extensions - ##-------------------------------------------------------------------------------------------------------------- - #else - #if($xwiki.exists("XWiki.Admin${section}Sheet")) - ## Custom XE administration section - #includeForm("XWiki.Admin${section}Sheet") - #elseif($xwiki.exists($section)) - ## Application section - #if($hasAdminActionUrl.contains($section)) - $xwiki.getDocument($section).getTranslatedDocument().getRenderedContent() - #else - #includeForm($section) - #end - #end - #end - #includeForm("XWiki.ConfigurableClass") - </div> ## admin-page-content - #end - <div id="admin-page-menu" #if($section != '')class="hidden"#end> - <ul id="admin-icons"> - #foreach($asection in $sections) - #if($xwiki.exists($asection) || $xwiki.exists("XWiki.Admin${asection}Sheet")) - #set($aiconurl = '') - #if($asection.indexOf('.') > 0) - #set($adoc = $xwiki.getDocument($asection)) - #set($atitle = $adoc.getDisplayTitle()) - #if($adoc.getAttachment('icon.png')) - #set($aiconurl = $adoc.getAttachmentURL('icon.png')) - #end - #else - #set($adoc = $xwiki.getDocument("XWiki.AdminSheet")) - #set($atitle = $msg.get("admin.${asection.toLowerCase()}")) - #set($aiconname = "${asection.toLowerCase()}.png") - #if($adoc.getAttachment($aiconname)) - #set($aiconurl = $adoc.getAttachmentURL($aiconname)) - #end - #end - #set($query = "editor=$escapetool.url(${editor})&amp;section=$escapetool.url(${asection})") - #if($editor != 'globaladmin') - #set($query = $query + "&amp;space=$escapetool.url(${currentSpace})") - #end - #set($dotindx = $asection.indexOf('.')) - #if($dotindx > 0) #set($name = $asection.replaceAll("\.", "_")) #else #set($name = $asection) #end - #if($asection == 'Import') - #set($url = $xwiki.getURL('XWiki.Import', 'import', $query)) - #elseif($asection == 'Export') - #set($url = $xwiki.getURL('XWiki.Export', 'export', $query)) - #elseif($xwiki.exists("XWiki.Admin${asection}Sheet")) - #set($url = $xwiki.getURL($currentDoc, 'admin', $query)) - #elseif($xwiki.exists($asection)) - #if($hasAdminActionUrl.contains($asection)) - #set($url = $xwiki.getURL($asection, 'admin', $query)) - #else - #set($url = $xwiki.getURL($currentDoc, 'admin', $query)) - #end - #end - <li class="${name}"><a href="$url"><span>#if("$!aiconurl" != '')<img src="$aiconurl" alt="$name icon" />#end#if("$!atitle" != '')$atitle#else$name#end</span></a></li> - #end - #end - #set($section = '') - #set($doNotUnlockConfigurableDocuments = true) - #includeForm('XWiki.ConfigurableClass') - </ul> - </div> ## admin-page-menu - </div> ## admin-page - {{/html}} -#end -{{/velocity}} diff --git a/src/main/webapp/docs/xwiki/XWiki/AdminTemplatesSheet.xml b/src/main/webapp/docs/xwiki/XWiki/AdminTemplatesSheet.xml deleted file mode 100644 index 44b8c7c2d..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/AdminTemplatesSheet.xml +++ /dev/null @@ -1,52 +0,0 @@ - - -XWiki -AdminTemplatesSheet - -en -0 -XWiki.XWikiPreferences -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1274777649000 -1274777649000 -1274777649000 -1.1 -Admin Templates Sheet - - - -Imported from XAR -false -xwiki/2.0 -false -{{velocity}} -= $msg.get('admin.templates.createprovider') = - -{{html}} - <form action="$doc.getURL('create')" method="post"> - <div> - <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" /> - <input type="hidden" name="parent" value="XWiki.TemplateProviderClass"/> - <input type="hidden" name="template" value="XWiki.TemplateProviderTemplate"/> - <label for="space">$msg.get('admin.templates.createprovider.space')</label> - <input type="text" id="space" name="space" value="XWiki" size="8"/> - <label for="page">$msg.get('admin.templates.createprovider.page')</label> - <input type="text" id="page" name="page" value="$msg.get('admin.templates.createprovider.defaultdocname')" class="withTip"'/> - <input id="createTemplateProvider" type="submit" value="$msg.get('admin.templates.createprovider.create')" class="button"/> - </div> - </form> -{{/html}} - -#set($availableProviders = $xwiki.searchDocuments(", BaseObject obj where doc.fullName=obj.name and obj.className='XWiki.TemplateProviderClass' and doc.fullName!='XWiki.TemplateProviderTemplate'")) -#if($availableProviders.size() > 0) - -= $msg.get('admin.templates.providerslist') = - - #foreach($providerFullname in $availableProviders) - * [[$xwiki.getDocument($providerFullname).getTitle()>>$providerFullname]] - #end -#end -{{/velocity}} diff --git a/src/main/webapp/docs/xwiki/XWiki/AdminUsersSheet.xml b/src/main/webapp/docs/xwiki/XWiki/AdminUsersSheet.xml deleted file mode 100644 index 63905dfd5..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/AdminUsersSheet.xml +++ /dev/null @@ -1,123 +0,0 @@ - - -XWiki -AdminUsersSheet - -en -0 -XWiki.AdminSheet -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1211801430000 -1267456606000 -1267456606000 -1.1 -AdminUsersSheet - - - -Imported from XAR -false -xwiki/2.0 -false -{{velocity}} -### Globally administrate the users in a wiki. -#set($formname = "update") -#set($saveaction = "save") -## -## inject needed JS and CSS files -## -#set($jsService = $services.javascript) -#set($extJsParam = $jsService.createExtJSParam().setAction('file')) -#set($extJsParam = $extJsParam.setLazyLoad(true)) -$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/lightbox/lightbox.js'))## -$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/usersandgroups/usersandgroups.js'))## -$services.css.includeCSSPage(':js/xwiki/usersandgroups/usersandgroups.css')## -$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/table/livetable.js'))## -$services.css.includeCSSPage(':js/xwiki/table/livetable.css')## -###set($ok = $xwiki.ssx.use("XWiki.XWikiUserSheet")) -###set($ok = $xwiki.jsx.use("XWiki.XWikiUserSheet")) -## -## url to get the users for displaying them in the ajax-based table -## -#set($url = $doc.getURL('get', 'xpage=getusers')) -#if($xcontext.database != "xwiki") - #set($mainwk = false) -#else - #set($mainwk = true) -#end -{{html}} -<div id="xwikieditcontent"> - <table id="userstable" class="xwiki-livetable"> - <tr> - <td class="xwiki-livetable-pagination" colspan="2"> - <span id="userstable-limits" class="xwiki-livetable-limits"></span> - <span id="userstable-ajax-loader" class="xwiki-livetable-loader"><img src="$xwiki.getSkinFile('icons/ajax-loader.gif')" alt="$msg.get('xe.livetable.loading')" title="" />$msg.get("xe.livetable.loading")</span> - <span class="pagination"> - <span id="userstable-pagination-text" class="xwiki-livetable-pagination-text">$msg.get("xe.pagination.page")</span> - <span id="userstable-pagination" class="xwiki-livetable-pagination-content" ></span> - </span> - </td> - </tr> - <tr> - <td class="xwiki-livetable-display-container"> - <table class="xwiki-livetable-display"> - <thead class="xwiki-livetable-display-header"> - <tr> - <th class="xwiki-livetable-display-header-text" scope="col">$msg.get("xe.admin.users.username")</th> - <th class="xwiki-livetable-display-header-text" scope="col">$msg.get("xe.admin.users.firstname")</th> - <th class="xwiki-livetable-display-header-text" scope="col">$msg.get("xe.admin.users.lastname")</th> - <th class="xwiki-livetable-display-header-text" scope="col">$msg.get("xe.admin.users.manage")</th> - </tr> - <tr id="userstable-filters" class="xwiki-livetable-display-filters"> - <td class="xwiki-livetable-display-header-filter"><label for="name" class="hidden">$msg.get("xe.admin.users.filter.username")</label><input id="name" name="name" type="text" class="filter"/></td> - <td class="xwiki-livetable-display-header-filter"><label for="first_name" class="hidden">$msg.get("xe.admin.users.filter.username")</label><input id="first_name" name="first_name" type="text" class="filter"/></td> - <td class="xwiki-livetable-display-header-filter"><label for="last_name" class="hidden">$msg.get("xe.admin.users.filter.username")</label><input id="last_name" name="last_name" type="text" class="filter"/></td> - <td class="xwiki-livetable-display-header-filter"> - #if(!$mainwk) - <select name="wiki" class="filter"> - <option value="local" selected="selected">$msg.get("rightsmanager.local")</option> - <option value="global">$msg.get("rightsmanager.global")</option> - <option value="both">$msg.get("rightsmanager.both")</option> - </select> - #else - <input name="wiki" type="hidden" value="local" /> - #end - </td> - </tr> - </thead> - <tbody id="userstable-display" class="xwiki-livetable-display-body"> - <tr> - <td colspan="4">&nbsp;</td> - </tr> - </tbody> - </table> - </td> - </tr> - <tr><td colspan="3" id="tdAddNewUserOrGroup"> - <span class="buttonwrapper"><a href="#" id="addNewUser" class="addNewUserOrGroup">$msg.get("rightsmanager.addnewuser")</a></span> - </td></tr> - </table> - <script type="text/javascript"> - // <![CDATA[ - (function() { - var startup = function() { - var ta = new XWiki.widgets.LiveTable("$url", "userstable", displayUsers); - #set($registerurl = $doc.getURL('view', 'xpage=registerinline')) - #set($saveurl = $doc.getURL('register', 'xpage=registerinline')) - #set($redirectuserurl = $xwiki.getDocument('XWiki.XWikiPreferences').getURL('admin', "editor=${editor}&section=Users")) - Event.observe($('addNewUser'), "click", makeAddHandler("$registerurl", "$saveurl", "$redirectuserurl")); - } - if ((typeof(XWiki) != 'undefined') && (typeof(XWiki.widgets) != 'undefined') && (typeof(XWiki.widgets.LiveTable) != 'undefined')) { - startup(); - } else { - document.observe('xwiki:dom:loading', startup); - } - })(); - // ]]> - </script> -</div> ## end of xwikieditcontent -{{/html}} -{{/velocity}} diff --git a/src/main/webapp/docs/xwiki/XWiki/ConfigurableClass.xml b/src/main/webapp/docs/xwiki/XWiki/ConfigurableClass.xml deleted file mode 100644 index c9d7dde36..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/ConfigurableClass.xml +++ /dev/null @@ -1,938 +0,0 @@ - - -XWiki -ConfigurableClass - -en -0 -XWiki.WebHome -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1265775370000 -1296127640000 -1296127640000 -1.1 -XWiki.ConfigurableClass - - - -Imported from XAR -false -xwiki/2.0 -false -DefaultAdminSectionIcon.png -7257 -XWiki.Admin -1266210801000 -1.1 -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 -/wpRrz9iAAAAAElFTkSuQmCC - - -XWiki.ConfigurableClass - - - - - - - - -0 ---- -codeToExecute -7 -0 -codeToExecute -5 -40 -0 - - -com.xpn.xwiki.objects.classes.TextAreaClass - - -0 -configurationClass -3 -0 -configurationClass -30 -0 - - -com.xpn.xwiki.objects.classes.StringClass - - - -0 -checkbox - -configureGlobally -4 -configureGlobally -0 - - -com.xpn.xwiki.objects.classes.BooleanClass - - -0 -displayInSection -1 -0 -displayInSection -30 -0 - - -com.xpn.xwiki.objects.classes.StringClass - - -0 -heading -2 -0 -heading -30 -0 - - -com.xpn.xwiki.objects.classes.StringClass - - -0 -iconAttachment -8 -0 -iconAttachment -30 -0 - - -com.xpn.xwiki.objects.classes.StringClass - - -0 -linkPrefix -5 -0 -linkPrefix -30 -0 - - -com.xpn.xwiki.objects.classes.StringClass - - -0 -0 -input -1 -propertiesToShow -6 -0 -propertiesToShow -1 - - ,| -20 -none -0 - - - -com.xpn.xwiki.objects.classes.StaticListClass - - - -XWiki.ConfigurableClass -0 -XWiki.JavaScriptExtension -71fc6ffa-92cb-48f1-9d80-a845d1807b10 - -long - - -document.observe('dom:loaded', function() { - // Hide headers unless they have error messages under them. - var elementsInPage = $('admin-page-content').childNodes; - var errorShown = false; - for (var i = elementsInPage.length - 1; i > -1; i--) { - var e = elementsInPage[i]; - if (e.tagName != undefined && e.tagName.toLowerCase() == 'div' && e.getAttribute('class') != undefined && e.getAttribute('class').indexOf('errormessage') != -1) - { - errorShown = true; - } else if (!errorShown - && e.tagName != undefined - && e.tagName.toLowerCase() == 'h1' - && e.getAttribute('id') != undefined - && e.getAttribute('id').toLowerCase().indexOf('hcustomize') == 0) - { - e.parentNode.removeChild(e); - errorShown = false; - } - } - - // Hide individual submit buttons. - var forms = document.getElementsByTagName('form'); - var inputs = document.getElementsByTagName('input'); - for (var i = 0; i < inputs.length; i++) { - if (inputs[i].getAttribute('type') != undefined && inputs[i].getAttribute('type').toLowerCase() == 'submit') { - inputs[i].parentNode.removeChild(inputs[i]); - } - } - - // Add a submit button for saving all sections at once. - var button = new Element('input', {'type':'submit', 'class':'button', 'value':'$msg.get("admin.save")', 'name':'formactionsac'}); - var wrapper = new Element('span', {'class':'buttonwrapper'}); - var adminButtons = new Element('p', {'class':'admin-buttons'}); - var bottomButtons = new Element('div', {'class':'bottombuttons'}); - $('admin-page-content').appendChild(bottomButtons); - bottomButtons.appendChild(adminButtons); - adminButtons.appendChild(wrapper); - wrapper.appendChild(button); - - Event.observe(button, 'click', function() { - var forms = $('admin-page-content').getElementsByTagName('form'); - for (var i = 0; i < forms.length; i++) { - Event.fire(document, 'xwiki:actions:save', {'form':forms[i].id, 'continue':true}); - } - }); -}); - - - - - -1 - - -onDemand - - -{{velocity}} -#* - * This part takes the configuration from any documents containing XWiki.ConfigurableClass objects and creates a form - * for each. To includeForm this document, you may specify: - * - * $section - String - The section which we are administrating eg: "Registration", "Users", or "Import". - * If none is specified then it checks for a request parameter called "section" and uses that, - * if no parameter, then this code assumes that it is part of the admin icons sheet and adds icons - * for any section which is not in $sections, in that event, this code assumes it is being run - * inside of a <ul> block. - * - * $sections - List<String> - If section is not specified, any sections on this list will not have icons made for them - * the assumption being that the icons are already there. If section is specified then this - * is not taken into account and may safely be undefined. - * - * $currentDoc - String (document.fullName) - The administration document, users who don't have permission to edit - * it will not be able to include applications (possibly injecting - * arbitrary code.) if none specified then $doc.getFullName() is used. - * - * $globaladmin - boolean - If set true then we will assume we are administrationg the entire wiki. - * If not set then we look for a request parameter called "editor" if that exists and equals - * "globaladmin" then $globaladmin is true, if it doesn't exist then we check to see if - * $currentDoc.getFullName() equals "XWiki.XWikiPreferences". - * - * $doNotUnlockConfigurableDocuments - boolean - If true then this code will not make any attempt to unlock configurable - * documents. By default it does because it locks any document in the - * section which is being configured which would lead to a lot of stray - * locks if they weren't all canceled. Only recommended if this page is - * being included twice in the same page. - *### -## Constants: -#set($redirectParameter = 'xredirect') -#set($nameOfThisDocument = 'XWiki.ConfigurableClass') -## -## Form submission depends on this. -#set($jsService = $services.javascript) -#set($extJsParam = $jsService.createExtJSParam().setAction('file')) -#set($extJsParam = $extJsParam.setLazyLoad(true)) -$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/actionbuttons/actionButtons.js'))## -## -#if(!$section) - #set($section = $request.getParameter('section')) -#end -#if(!$currentDoc) - #set($currentDoc = $doc.getFullName()) -#end -## Get value of $globaladmin if not specified. -#if("$!globaladmin" == '') - #if($editor != 'globaladmin' - && $request.getParameter('editor') != 'globaladmin' - && $currentDoc != 'XWiki.XWikiPreferences') - ## - #set($globaladmin = false) - #else - #set($globaladmin = true) - #end -#end -#set($currentSpace = $xwiki.getDocument($currentDoc).getSpace()) -## -## This application should not run with programming rights because it evaluates code which may not be trustworthy. -## Removing the next line will open a security hole. -#sandboxDocument() -## -## This application locks every document in a section while that section is being edited so we should -## check for locks held by the current user on any of the applications configured here and remove them. -#if(!$doNotUnlockConfigurableDocuments) - #set($outputList = []) - #findNamesOfAppsToConfigure("", $globaladmin, $currentSpace, $outputList)## - ## We don't want to generate javascript which unlocks the current document just after we got finished locking it. - #set($discard = $outputList.remove($currentDoc)) - #unlockDocuments($outputList) -#end -## -##------------------------------------------------------------------------------------------------------------ -## If $section exists then we are viewing the admin page for a particular section. -## eg: 'Registration', 'Presentation', 'Import' etc. -##------------------------------------------------------------------------------------------------------------ -## -#if($section && $section != '') - ## - ## This is for keeping track of whether we have shown the heading yet or not. - ## If the heading doesn't need to be shown, but an error occurs in processing, then we show the heading - ## so that the user knows what the error relates to. - #set($headingShowing = false) - ## - ## Searches the database for names of apps to be configured - #set($outputList = []) - #findNamesOfAppsToConfigure($section, $globaladmin, $xwiki.getDocument($currentDoc).getSpace(), $outputList) - ## - #foreach($appName in $outputList) - ## - ## Make sure the current user has permission to edit the configurable application. - #set($userHasAccessToDocument = $xcontext.hasAccessLevel('edit', $appName)) - ## - ## If the document was not last saved by a user with edit privilege on this page - ## then we can't safely display the page but we should warn the viewer. - #if($userHasAccessToDocument) - ## Get the configurable application - #set($app = $xwiki.getDocument($appName)) - ## - #set($documentSavedByAuthorizedUser = false) - #checkDocumentSavedByAuthorizedUser($app, $currentDoc, $documentSavedByAuthorizedUser) - #end - ## - ## There is no need to display a heading unless: - ## 1. There was already a section before this document. - ## 2. This is not the first document in this section. - ## - ## If we are displaying the heading and there is an error to be shown Javascript will not strip the heading. - #if(!$appName.equals($outputList.get(0)) || $sections.contains($section)) - ## Create a document heading. - #showHeading($appName, $headingShowing) - #end - ## - #if(!$userHasAccessToDocument) - #showHeading($appName, $headingShowing) - - {{error}}$msg.get('xe.admin.configurable.noPermissionThisApplication'){{/error}} - - #else - ## - #if(!$documentSavedByAuthorizedUser) - #showHeading($appName, $headingShowing) - - {{error}}$msg.get('xe.admin.configurable.applicationAuthorNoAdmin', [$app.Author]){{/error}} - - #else - ## - ## Locking document - ##------------------------------------------------------------------------------------------------------------ - #if($app.getLocked()) - #set($locked = true) - #end - ## If the document is locked and not by the current user and forceEdit is not set true, - #if($locked && $app.getLockingUser() != $xcontext.getUser() && !$request.getParameter('forceEdit')) - #set($requestURL = "$request.getRequestURL()") - #if($requestURL.indexOf('?') == -1) - #set($requestURL = "${requestURL}?") - #end - #showHeading($appName, $headingShowing) - - {{error}}$msg.get('doclockedby') $app.getLockingUser() [[$msg.get('forcelock')>>${requestURL}&forceEdit=1]]{{/error}} - - #else - ## If the document is not already locked, attempt to acquire the lock. - #if(!$locked) - ## Try to use an AJAX call to lock the document. - - - {{html wiki=true}} - <noscript> - - {{warning}}$msg.get('xe.admin.configurable.cannotLockNoJavascript'){{/warning}} - - </noscript> - <script type="text/javascript"> - document.observe("xwiki:dom:loaded", function() { - new Ajax.Request("$xwiki.getURL($app.getFullName(), 'lock', 'ajax=1')"); - }); - </script> - {{/html}} - - #set($discard = $lockedDocumentNames.add($app.getFullName())) - #end - ##------------------------------------------------------------------------------------------------------------ - ## Done Locking. - ## - ## Get all objects of the "ConfigurableClass" from this document. - #set($allConfigurableObjs = $app.getObjects($nameOfThisDocument)) - ## Separate out the objects which are for this section. - #set($configurableObjs = []) - #foreach($configurableObj in $allConfigurableObjs) - #if($app.getValue('displayInSection', $configurableObj) == $section) - ## If this is space admin, then don't display global, if global don't display space. - #if($globaladmin == ($app.getValue('configureGlobally', $configurableObj) == 1)) - #set($discard = $configurableObjs.add($configurableObj)) - #end - #end - #end - #if($configurableObjs.size() == 0) - ## Internal error, not translated. - #showHeading($appName, $headingShowing) - - {{error}}Internal error: All objects were filtered out for application: $appName.{{/error}} - - #else - #set($formAction = $xwiki.getURL($app.getFullName(), 'save')) - #set($formId = "${section.toLowerCase()}_${app.getFullName()}") - #set($escapedAppName = $escapetool.xml($app.getFullName())) - #foreach($configurableObj in $configurableObjs) - ## Display the header if one exists. - #set($heading = $app.getValue('heading', $configurableObj)) - #if($heading && $heading != '') - == #evaluate($heading) == - #end - ## - #set($codeToExecute = "$!app.getValue('codeToExecute', $configurableObj)") - #if($codeToExecute != '') - (%class="codeToExecute"%)(((## - #evaluate($codeToExecute)## - ))) - #end - ## - ## If propertiesToShow is set, then we will only show the properties contained therein. - #set($propertiesToShow = $app.getValue('propertiesToShow', $configurableObj)) - #if(!$propertiesToShow || $propertiesToShow.getClass().getName().indexOf('List') == -1) - #set($propertiesToShow = []) - #end - ## - ## If linkPrefix is set, then we will make each property label a link which starts with that prefix. - #set($linkPrefix = "$!app.getValue('linkPrefix', $configurableObj)") - ## - ## If the Configurable object specifies a configuration class, use it, - ## otherwise assume custom forms are used instead. - #set($configClassName = "$!app.getValue('configurationClass', $configurableObj)") - #if($configClassName != '') - #set($objClass = $xwiki.getDocument($configClassName).getxWikiClass()) - #if(!$objClass || $objClass.getClass().getName().indexOf('.Class') == -1) - #showHeading($appName, $headingShowing) - - {{error}}$msg.get('xe.admin.configurable.configurationClassNonexistant'){{/error}} - - #else - ## Use the first object from the document which is of the configuration class. - #set($obj = $app.getObject($objClass.getName())) - ## - #if(!$obj || $obj.getClass().getName().indexOf('.Object') == -1) - #showHeading($appName, $headingShowing) - - {{error}} - $msg.get('xe.admin.configurable.noObjectOfConfigurationClassFound', - [$objClass.getName(), $app.getFullName()]) - {{/error}} - - #else - ## - ## Merge save buttons, remove headings from subsections, and make information links into popups. - ## This is not done if there is only a custom defined form. -## $xwiki.jsx.use($nameOfThisDocument) - ## - ## We don't begin the form until we have content for it so that a configurable can specify a - ## custom form in codeToExecute and if that configurable object is the first of it's kind in that - ## document, the custom form will not be put inside of our form. - #if(!$insideForm) - ## We are opening a form and fieldset without closing it, thus we cannot clean this html. - - {{html clean=false}} - <form id="$formId" method="post" action="$formAction"> - <fieldset> - {{/html}} - #set($insideForm = true) - #end - #define($formHtml) - #foreach($propName in $objClass.getPropertyNames()) - #if($propertiesToShow.size() > 0 && !$propertiesToShow.contains($propName)) - ## Silently skip over this property. - #else - <p> - #set($prettyName = "#evaluate($app.displayPrettyName($propName, $obj))") - ## App Name is prepended to for= to make label work with id which is modified to prevent collisions. - <label for="${escapedAppName}_$objClass.getName()_$obj.getNumber()_$propName"> - #if($linkPrefix != '') - #set($linkScript = "$linkPrefix$propName") - <a href="$escapetool.xml("#evaluate($linkScript)")">$escapetool.xml($prettyName)</a> - #else - $escapetool.xml($prettyName) - #end - </label> - ## Step 1: Strip pre tags which $obj.display inserts, this won't affect content because it's escaped. - #set($out = $obj.display($propName, 'edit').replaceAll('<[/]?pre>', '')) - ## Step 2: Select only content between first < and last > because $obj.display inserts html macros. - ## Careful not to remove html macros from the content because they are not escaped! - ## Step 3: Prepend app name to all ID and FOR attributes to prevent id collision with multiple apps on one page. - $out.substring($out.indexOf('<'), $mathtool.add(1, $out.lastIndexOf('>'))).replaceAll( - " id='$objClass.getName()_$obj.getNumber()_$propName", - " id='${escapedAppName}_$objClass.getName()_$obj.getNumber()_$propName").replaceAll( - " for='$objClass.getName()_$obj.getNumber()_$propName", - " for='${escapedAppName}_$objClass.getName()_$obj.getNumber()_$propName") - </p> - #end## If property is in propertiesToShow - #end## Foreach property in this class - #end## define $formHtml - - - {{html}} - $formHtml.toString() - {{/html}} - - #end## If object exists - #end## If class exists - #end## If class name is specified. - #end## Foreach configurable object found in this document - ## If a form was started then we end it. - #if($insideForm) - - ## This is closing an open form which was opened above, we cannot clean this html. - {{html clean=false}} - ## We add in a redirect field to prevent the user from being carried away when they save - ## if they don't have javascript. - #set($thisURL = $request.getRequestURL()) - #if($request.getQueryString() && $request.getQueryString().length() > 0) - #set($thisURL = "${thisURL}?$request.getQueryString()") - #end - <input type="hidden" id="${escapedAppName}_redirect" name="$redirectParameter" value="$escapetool.xml($thisURL)" /> - <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" /> - </fieldset> - <div class="bottombuttons"> - <p class="admin-buttons"> - <span class="buttonwrapper"> - ## Text to display on the button. If there is a heading then this button should be labeled - ## that it is for saving this section. Otherwise it should be a generic "save" button. - #if($headingShowing) - #set($buttonText = "$msg.get('admin.save') $escapedAppName") - #else - #set($buttonText = "$msg.get('admin.save')") - #end - <input class="button" type="submit" name="action_saveandcontinue" value="$buttonText" /> - </span> - </p> - </div> ## bottombuttons - </form> - #set($insideForm = false) - {{/html}} - - #end - #end## If there are configurable objects - #end## If document is not locked or forceEdit is enabled - #end## If app author has permission to edit admin page - #end## If the current user has permission to edit the configurable application. - #end## Foreach document name in names to configure - - - {{html}} - <script type="text/javascript"> - /* <![CDATA[ */ - ## Alt+Shift+S presses the first saveAndContinue button it finds, not what we want so we will disable edit shortcuts. - document.observe('xwiki:dom:loaded', function() { - XWiki.actionButtons.EditActions = Object.extend(XWiki.actionButtons.EditActions, {addShortcuts : function() { }}); - }); - //]]> - </script> - {{/html}}## - ## -#else - ## - ##------------------------------------------------------------------------------------------------------------ - ## If section is not set then we are viewing the main administration page. - ##------------------------------------------------------------------------------------------------------------ - ## - ## If there is no list called sections then we set sections to an empty list. - #if(!$sections || $sections.getClass().getName().indexOf('List') == -1) - #set($sections = []) - #end - ## - ## We have to create a list of documents which the current user doesn't have permission to view. - ## So we can add an error message to the bottom of the page if there are any. - #set($appsUserCannotView = []) - ## - ## A list of sections (to be added) which the user is not allowed to edit, icons will be displayed with a message - #set($sectionsUserCannotEdit = []) - ## List of sections to be added, in order by creationDate of oldest contained application. - #set($sectionsToAdd = []) - ## Map of URL of icon to use by the name of the section to use that icon on. - #set($iconBySection = {}) - ## - #set($outputList = []) - #findNamesOfAppsToConfigure("", $globaladmin, $currentSpace, $outputList) - ## - #foreach($appName in $outputList) - ## - ## Get the configurable application - #set($app = $xwiki.getDocument($appName)) - ## - ## If getDocument returns null, then warn the user that they don't have view access to that application. - #if(!$app) - #set($discard = $appsUserCannotView.add($appName)) - #end - ## - #set($configurableObjects = $app.getObjects($nameOfThisDocument)) - #foreach($configurableObject in $configurableObjects) - #set($displayInSection = $app.getValue('displayInSection', $configurableObject)) - ## - ## If there is no section for this configurable or if the section cannot be edited, then check if the - ## application can be edited by the current user, if so then we display the icon from the current app and - ## don't display any message to tell the user they can't edit that section. - #if(!$sections.contains($displayInSection) || $sectionsUserCannotEdit.contains($displayInSection)) - ## - ## If there is no section for this configurable, then we will have to add one. - #if(!$sections.contains($displayInSection) && !$sectionsToAdd.contains($displayInSection)) - #set($discard = $sectionsToAdd.add($displayInSection)) - #end - ## - ## If an attachment by the filename iconAttachment exists and is an image - #set($attachment = $app.getAttachment("$app.getValue('iconAttachment', $configurableObject)")) - #if($attachment && $attachment.isImage()) - ## Set the icon for this section as the attachment URL. - #set($discard = $iconBySection.put($displayInSection, $app.getAttachmentURL($attachment.getFilename()))) - #end - ## - ## If the user doesn't have edit access to the application, we want to show a message on the icon - #if(!$xcontext.hasAccessLevel("edit", $app.getFullName())) - #if(!$sectionsUserCannotEdit.contains($displayInSection)) - #set($discard = $sectionsUserCannotEdit.add($displayInSection)) - #end - #elseif($sectionsUserCannotEdit.contains($displayInSection)) - ## If the user didn't have access to the section before but does have access to _this_ app which is - ## configured in the section, then the section becomes accessible. - #set($discard = $sectionsUserCannotEdit.remove($displayInSection)) - #end - #end## If section doesn't exist or user doesn't have access. - #end## Foreach configurable object in this app. - #end## Foreach application which is configurable. - ## - ## Now we go through sectionsToAdd and generate icons for them - #set($defaultIcon = $xwiki.getAttachmentURL($nameOfThisDocument, 'DefaultAdminSectionIcon.png')) - #if($globaladmin) - #set($queryString = "editor=globaladmin&amp;section=") - #else - #set($queryString = "space=${currentSpace}&amp;section=") - #if($request.getParameter('editor')) - #set($queryString = "editor=$escapetool.url($request.getParameter('editor'))&amp;$queryString") - #end - #end - - ## This is an html fragment and thus cannot be cleaned - {{html clean=false}} - #foreach($sectionToAdd in $sectionsToAdd) - #set($icon = $iconBySection.get($sectionToAdd)) - #if(!$icon) - #set($icon = $defaultIcon) - #end - <li class="$escapetool.xml($sectionToAdd).replaceAll(' ', '_')"> - #set($hasAccess = !$sectionsUserCannotEdit.contains($sectionToAdd)) - #if($hasAccess) - <a href="$xwiki.getURL($currentDoc, $xcontext.getAction(), "$queryString$escapetool.url($sectionToAdd)")"> - #else - <a title="$msg.get('xe.admin.configurable.sectionIconNoAccessTooltip')"> - #end - <span> - <img src="$icon" alt="$escapetool.xml($sectionToAdd) icon"/> - ## Try to translate the names of the sections, build the key by adding an "admin." in front. - ## Not the best way to translate, but very inline with the way the translations are done in XWiki.AdminSheet for individual administration page titles. - ## If there is no translation (translated message is equals to key), don't display the message key, but the section name instead. - #if($msg.get("admin.${sectionToAdd.toLowerCase()}") != "admin.${sectionToAdd.toLowerCase()}") - #set($sectionDisplayName = $msg.get("admin.${sectionToAdd.toLowerCase()}")) - #else - #set($sectionDisplayName = $sectionToAdd) - #end - $escapetool.xml($sectionDisplayName) - </span> - #if(!$hasAccess) - <br/><span class="errormessage">$msg.get('xe.admin.configurable.sectionIconNoAccess')</span> - #end - </a> - </li> - #end - {{/html}} - - ## Finally we display an error message if there are any applications which we were unable to view. - #if($appsUserCannotView.size() > 0) - - {{error}}$msg.get('xe.admin.configurable.noViewAccessSomeApplications', [$appsUserCannotView]){{/error}} - - #end -#end## If we should be looking at the main administration page. -## -##------------------------------------------------------------------------------------------------------------ -## The Macros, nothing below this point is run directly. -##------------------------------------------------------------------------------------------------------------ -## -#* - * - * Any documents which are on the provided list ($documentNames) which are locked by the current user will be unlocked. - * If this macro has programming rights, then they are unlocked programmatically, otherwise a javascript tag is - * generated with ajax calls to cancel for all of the documents. If there are documents on this list which are not - * locked by the current user, then they are ignored. - * - * @param $documentNames - List<String> - fullNames of documents which should be unlocked if they are locked by the - * current user. - *### -#macro(unlockDocuments $documentNames) - #if($documentNames.size() > 0) - #set($sql = "doc.fullName=") - #foreach($documentName in $documentNames) - #set($sql = "${sql}'$documentName' or doc.fullName=") - #end - ## Trim the dangling ' or doc.fullName=?' - #set($sql = $sql.substring(0, $sql.lastIndexOf(' or doc.fullName='))) - #set($sql = ", XWikiLock lock where lock.docId=doc.id and lock.userName='$xcontext.getUser()' and (${sql})") - #set($namesOfdocumentsToUnlock = $xwiki.searchDocuments($sql)) - ## Use ajax and hope the user runs javascript. - {{html}} - <script type="text/javascript"> - document.observe("dom:loaded", function() { - #foreach($nameOflockedDocument in $namesOfdocumentsToUnlock) - new Ajax.Request("$xwiki.getURL($nameOflockedDocument, 'cancel', 'ajax=1')"); - #end - }); - </script> - {{/html}}## - #end## If output list size > 0 -#end## Macro -## -#* - * Find names of documents which contain objects of the class 'XWiki.ConfigurableClass' - * - * @param $section - String - Look for apps which specify that they should be configured in this section, - * if null or "" then returns them for all sections. - * - * @param $globaladmin - boolean - If true then we will look for applications which should be configured globally. - * - * @param $space - String - If not looking for apps which are configured globally, then this is the space where we - * will look for apps in. If null or "" or if $globaladmin is true, then all spaces will be - * searched. - * - * @param $outputList - List - The returns from this macro will be put in this list, passing the list as a parameter - * a safety measure because macros can't return values. - *### -#macro(findNamesOfAppsToConfigure, $section, $globaladmin, $space, $outputList) - ## Use a parameterized sql query to prevent injection. - #set($params = []) - #if($section && $section != '') - #set($discard = $params.add("$section")) - #set($sqlA = ' StringProperty as section,') - #set($sqlB = " and section.id=obj.id and section.name='displayInSection' and section.value=?") - #else - ## Make sure they are "" in case they were set prior to calling the macro. - #set($sqlA = '') - #set($sqlB = '') - #end - ## Set up query based on value of $globaladmin - #if($globaladmin == true) - #set($sqlC = '1') - #else - #if($space && $space != '') - #set($sqlC = '0 and doc.space = ?') - #set($discard = $params.add($space)) - #else - #set($sqlC = '0') - #end - #end - #set($sql = ", BaseObject as obj,$sqlA IntegerProperty as global where " - + "doc.fullName=obj.name and obj.className='" + $nameOfThisDocument + "'$sqlB " - + "and global.id=obj.id and global.name='configureGlobally' and global.value=$sqlC " - + "order by doc.creationDate") - ## - ## Run the search - #set($outputList = $xwiki.searchDocuments($sql, 0, 0, $params)) - ## -#end -## -#* - * If this document is saved with programming access or is includeForm'd into a document with programming, we have to - * drop programming rights in order for it to run safely because it evaluates potentially untrustworthy code. - *### -#macro(sandboxDocument) - #if($xcontext.hasProgrammingRights()) - $xcontext.dropPermissions()## - #end -#end -## -#* - * Try to determine whether a document was edited by a user who has edit right on this page. This is tricky because - * documents are imported with the name XWiki.XWikiGuest who has no access to anything after import. - * - * @param theDoc - Document who's editor should be checked for edit access on this document. - *### -#macro(checkDocumentSavedByAuthorizedUser, $docToCheck, $currentDoc, $hasAccess) - ## The system is started and the only user is XWikiGuest who has admin right but gives it up when he imports the default - ## documents, we are checking to see if this looks like the guest imported the document with the first import. - #if($docToCheck.getWiki() == $xcontext.getMainWikiName() - && $docToCheck.getVersion() == '1.1' - && $docToCheck.getCreator() != $docToCheck.getContentAuthor() - && $docToCheck.getContentAuthor() == 'XWiki.XWikiGuest') - ## - #set($userToCheck = $docToCheck.getCreator()) - #else - #set($userToCheck = $docToCheck.getAuthor()) - #end - #set($hasAccess = $xwiki.hasAccessLevel('edit', $userToCheck, $currentDoc)) -#end -## -#* - * Show the heading for configuration for a given application. - * - * $appName (String) Name of the application to show configuration heading for. - * - * $headingAlreadyShowing (boolean) If true then we don't make another heading. Otherwise it is set to true. - *### -#macro(showHeading, $appName, $headingAlreadyShowing) - #if(!$headingAlreadyShowing) - #set($headingAlreadyShowing = true) - - = $msg.get("admin.customize") __[[$appName>>$appName]]__: = - #end -#end -{{/velocity}} diff --git a/src/main/webapp/docs/xwiki/XWiki/XWikiUserPreferencesSheet.xml b/src/main/webapp/docs/xwiki/XWiki/XWikiUserPreferencesSheet.xml deleted file mode 100644 index 760585569..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/XWikiUserPreferencesSheet.xml +++ /dev/null @@ -1,64 +0,0 @@ - - -XWiki -XWikiUserPreferencesSheet - -en -0 -XWiki.XWikiUserSheet -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1263288512000 -1263288512000 -1263288512000 -1.1 - - - - -Imported from XAR -false -xwiki/2.0 -false -{{velocity}} -#set($obj = $doc.getObject("XWiki.XWikiUsers")) -#if(!$obj) -{{info}}$msg.get('xe.admin.users.applyonusers'){{/info}}## -#else -$doc.use($obj) -##$xwiki.ssx.use('XWiki.XWikiUserSheet')## -{{html wiki="true"}} - <div class="#if($context.action == 'view')half #{else}full #{end}column"> - <div class="userPreferences"> - #if($xcontext.action == 'view' && $hasEdit) - <div class="editProfileCategory"><a href="$doc.getURL('inline', 'category=preferences')"><span class="hidden">$msg.get('platform.core.profile.category.preferences.edit')</span></a></div> - #end - <h1>$msg.get('platform.core.profile.section.displayPreferences')</h1> - <dl> - <dt class="label"><label>$msg.get('platform.core.profile.enableAccessibility')</label></dt> - <dd>$doc.display('accessibility')</dd> - </dl> - <h1>$msg.get('platform.core.profile.section.editorPreferences')</h1> - <dl> - <dt class="label"><label>$msg.get('platform.core.profile.editor')</label></dt> - <dd>$doc.display('editor')</dd> - <dt class="label"><label>$msg.get('platform.core.profile.userType')</label></dt> - <dd>$doc.display('usertype')</dd> - </dl> - </div> - </div> - #set($isMyProfile = ($xwiki.getDocument($xcontext.user).prefixedFullName == $doc.prefixedFullName)) - #if(($isMyProfile || $hasAdmin) && !$doc.getObject('XWiki.LDAPProfileClass') && $xcontext.action == 'view') - <div class="half column"> - <div class="passwordManagement"> - <h1>$msg.get('platform.core.profile.section.security')</h1> - <span class="buttonwrapper"><a id="changePassword" href="$doc.getURL("view", "xpage=passwd")">$msg.get("platform.core.profile.changePassword")</a></span> - </div> - </div> - #end - <div class="clearfloats">&nbsp;</div> -{{/html}}## -#end -{{/velocity}} diff --git a/src/main/webapp/docs/xwiki/XWiki/XWikiUserProfileSheet.xml b/src/main/webapp/docs/xwiki/XWiki/XWikiUserProfileSheet.xml deleted file mode 100644 index a7dfbe565..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/XWikiUserProfileSheet.xml +++ /dev/null @@ -1,112 +0,0 @@ - - -XWiki -XWikiUserProfileSheet - -en -0 -XWiki.XWikiUserSheet -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1262856167000 -1262856167000 -1262856167000 -1.1 - - - - -Imported from XAR -false -xwiki/2.0 -false -{{velocity}} -#set($obj = $doc.getObject("XWiki.XWikiUsers")) -## Allow $obfuscateEmail to be set in some other place. -#if("$!obfuscateEmail" == '') - #set($obfuscateEmail = true) -#end -#if(!$obj) -= $msg.get('xe.admin.users.sheet') = - -{{info}}$msg.get('xe.admin.users.applyonusers'){{/info}}## -#else -$doc.use($obj) -{{html clean="false" wiki="true"}} -#set($username = $xwiki.getUserName($doc.fullName, false)) -= $msg.get('platform.core.profile.title', [$username]) = - -#if($xcontext.action == 'view') - <div class="vcard"> - <span class="fn hidden">$username</span> -#end -##$xwiki.ssx.use("XWiki.XWikiUserSheet")## - <div class="#if($context.action == 'view')half #{else}full #{end}column"> - <div class="userInfo"> - #if($xcontext.action == 'view' && $hasEdit) - <div class="editProfileCategory"><a href="$doc.getURL('inline', 'category=profile')"><span class="hidden">$msg.get('platform.core.profile.category.profile.edit')</span></a></div> - #end - ## Please do not insert extra empty lines here (as it affects the validity of the rendered xhtml) - <h1>$msg.get('platform.core.profile.section.personal')</h1> - <dl> - <dt class="label"><label>$msg.get('platform.core.profile.firstname')</label></dt> - <dd #if($xcontext.action == 'view')class="given-name"#end>$doc.display('first_name')</dd> - <dt class="label"><label>$msg.get('platform.core.profile.lastname')</label></dt> - <dd #if($xcontext.action == 'view')class="family-name"#end>$doc.display('last_name')</dd> - #if(($obj.getProperty('company') && $obj.getProperty('company').getValue() != '') || $xcontext.action != 'view') - <dt class="label"><label>$msg.get('platform.core.profile.company')</label></dt> - <dd #if($xcontext.action == 'view')class="org"#end>$doc.display('company')</dd> - #end - #if(($obj.getProperty('comment') && $obj.getProperty('comment').getValue() != '') || $xcontext.action != 'view') - <dt class="label"><label>$msg.get('platform.core.profile.about')</label></dt> - <dd #if($xcontext.action == 'view')class="note"#end>$doc.display('comment')</dd> - #end - </dl> - <h1>$msg.get('platform.core.profile.section.contact')</h1> - <dl> - <dt class="label"><label>$msg.get('platform.core.profile.email')</label></dt> - <dd #if($xcontext.action=="view")class="email"#end>#if($xcontext.action != 'view' || !$obfuscateEmail)$doc.display('email')#else $doc.display('email').replaceAll('@.*', '@ ~-~-~-~-~-~-')#end</dd> - <dt class="label"><label>$msg.get('platform.core.profile.phone')</label></dt> - <dd #if($xcontext.action == 'view')class="tel"#end>$doc.display('phone')</dd> - <dt class="label"><label>$msg.get('platform.core.profile.address')</label></dt> - <dd #if($xcontext.action == 'view')class="adr"#end>$doc.display('address')</dd> - </dl> - #set($hasBlog = ($obj.getProperty('blog') && $obj.getProperty('blog').getValue() != '')) - #set($hasBlogFeed = ($obj.getProperty('blogfeed') && $obj.getProperty('blogfeed').getValue() != '')) - #if($hasBlog || $hasBlogFeed || $xcontext.action != 'view') - <h1>$msg.get('platform.core.profile.section.links')</h1> - <dl> - #if($hasBlog || $xcontext.action != 'view') - <dt class="label"><label>$msg.get('platform.core.profile.blog')</label></dt> - <dd>$doc.display('blog')</dd> - #end - #if($hasBlogFeed || $xcontext.action != 'view') - <dt class="label"><label>$msg.get('platform.core.profile.blogFeed')</label></dt> - <dd>$doc.display('blogfeed')</dd> - #end - </dl> - #end - </div> - </div> - #if ($xcontext.action == 'view') - <div class="half column"> - <div class="userRecentChanges"> - <h1>$msg.get('platform.core.profile.section.activity')</h1> -{{/html}} - -{{activity authors="${doc.fullName}" /}} - -{{html clean="false"}} - </div> - </div> - #end - <div class="clearfloats">&nbsp;</div> -#if($xcontext.action == 'view') - ## Close the vcard - </div> -#end -{{/html}}## -#end -{{/velocity}} diff --git a/src/main/webapp/docs/xwiki/XWiki/XWikiUserSheet.xml b/src/main/webapp/docs/xwiki/XWiki/XWikiUserSheet.xml deleted file mode 100644 index b0c66fd04..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/XWikiUserSheet.xml +++ /dev/null @@ -1,445 +0,0 @@ - - -XWiki -XWikiUserSheet - -en -0 -Main.XWikiUsers -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1106308018000 -1106308018000 -1106308018000 -1.1 - - - - -Imported from XAR -false -xwiki/2.0 -false -noavatar.png -3076 -XWiki.Admin -1263400909000 -1.1 -iVBORw0KGgoAAAANSUhEUgAAAKAAAACgCAIAAAAErfB6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA -IGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAuKSURBVHja7F3ZduK6 -ErXl2RgPhNgE6ED//wf1a3fSi0xAQ0KYweeh7tJVbCAJGFsytR9YQCDYtVWjpJL869cvCVFeEBQB -EoxAghFIMAIJRiDBCCQYgQQjwQgkGIEEI5BgBBKMQIIRSDASjECCEUgwAglGIMEIJBiBBCOQYCQY -gQQjkGAEEoxAghFIMAIJRoIRSHAxiONYkiRZlg9/7NMPZHUlSHDGMgXmEsJNv/9F6cuyvPMffjpu -6BeR4Cwhy/JOJmRZ3m63kiQR8r172W637BcPcxbH8XcHECdQBbpWUB0qX/ocGNput+wHdF3XNE3X -dcMwdF2n9IPGx3G8Wq2Wy+VqtZrP54vFgtp/lj9qHgghYvEqJMEJ7aHPKbWEEMuyXNe1bVvTtH1G -HmBZFqvNs9lsMplMJpPVapUeUuzv7rMlnGqFKE1YWLEmqJIkybZt3/cdx/muoU7TP51Ox+PxZDJZ -r9fwDv1pcAcCOWDBNJhywIrYdd1arWaaJhttHeBg31/pd23btm17s9mMRqPhcLjZbOAr4LDFYlck -DU5rc6VSiaJI1/Xz/dB2ux0Oh4PBgHX8Yimxyj+R6ZeqqoZhWK1Wz55jEFKv1z3Pe3l5GY/HcAEJ -djl3yTwSHMcxuNJ0ygs2udFoHO1rj4CmaY1Gw3Gcx8dHNuACaqlC88m0yiG7CVfKSjCKIt/3P3Wo -51Bl13UNw+j1eovFghpwdpzxqcfcFTogMwFSt9stUCjLsqIonU7H87yd1aV8YBjGz58/HcdJ1FiQ -4GOUmNVOYNc0zULMYKKG1W63Pc9LF8b5jLwEKFXqut7tdnVd/+Jkw5lcBvvTNzc3tVotMdSQ4G9Y -afpcUZR2u60oCvXEibpSnhfDIooi13XZv+YWEJTBRNNY+sePH7quQxmSCpETOTabTah38jwPwakG -A7tRFJmmya0ZlGW51WqpqrozP0aC90oN0g/XdWkswyfiOFYUpdlssrVMJPhLQQ3UFiS+a7+guLZt -X19fS7xOKXIaRUdR9K3lFsXGg1dXV5qmYZD1VbiuW6lUuI1L0/kxlNiw0PFVnQjDkE15uVViOvji -OHYcx3EcNNGfw/M8iEsTro5/Q12v19FEf46rq6t0TinE/KtlWbZtI8E7fBjrfelaKoEm1Wllplar -7TPjl0hw+uYTk0WigM5mVioVVVUPD+LLNdGqqkLwLCJoVLhznUmBNHNEsLjssgF/sTPW3BHMZhqC -2ufE7ZimyVrpQqY4OSKY2i5CSGJeQVxwZYp4MdGmaea5ju6sQ5arZIlwIpTSqK8sy2ddqi0kwTB9 -JJUFsHYMCf6QPHA16k8fr4qiIMEfYssyaTDk9EiwxG4IKEeE9X+xcnM7BQ80mibyY9MyAZro/7FL -rXTJNBiDrCTBgjZIEMBZFDvMKa+bzaY0MoUth0jwB8UtkwbLsrxerzm5r4IJhqWmsiyXSYMlSaIa -fOmzSXQjId10Ww7wM16L98HwuFwuS8Puer1Ggj+oryzLq9WqHG4YrBE/98LLhP98PheuQ9G+O5rN -ZpgHJ6No6CpYDhM9nU4xD+ZdLqcM2fl8ztqnYs01RwS/vb0dUHFRMJlMaI5U+IIsvgh+f3+H+oC4 -nT8lSRqNRlxdDxdpEs0dQYnTreQ4t8n0cbPZvL+/c2WHuEiT4KWiKOzw51xx2b2j9HE8Hh9OFi6O -4HQGST0x58Y5HUDFcTwcDtM9ly43yNrZRWwwGIhinBNXOB6P1+t1evrkcoMstlRJPdl8Pp9MJqJk -ROzzl5cXDi+ySIKht1milZwsy8/Pz0Kwy6pmv9+n9WeuOk/wtX0UpLNcLvnUhn3Z7XK5HA6HfKZ2 -nK6EGg6Hs9nssGHMTYiHe1LGcdzr9SRsZfhd39zr9aCd8L6YJTdppg9eoZcErnc+n0PzNmzC8g2N -Wa1WDw8P7IknBaYc+xpkzmYzSI24PViJ626zb29vCWec6O5aiImmWCwWf//+lXJvgFsSDaZp8evr -K1sOlHIv4u/8oeVyeX9/nzhrB030Mej1eq+vr9LHA6oKHHPgPu7v79m8iNvKDL8Es1J7eHiAPKQo -XWGZm8/nf/78EWV5Ar8EJ7Th+fn56emJrSQUYg+n0+nd3R1d9sw/RDrabjQazWazVqtFW7vmnHq+ -vLzAKWh4fvC5jPZ8Pv/9+zc745TPT69Wq7u7u36/DztdBVqDIIwG08OU1ut1r9ezbTsMQ8MwchhV -g8Gg3+/T8STW2YUiHfFO97nEcfz+/v74+JjDOr3JZDKdTtMzm989IR41+HNAOVCWZdd1fd/PpzFP -tVp1HGe9Xo9Go9FoRFMj9sA9ri2fQMfLqqoaBIHv+7B/PudgB4bXv3//RqPRYrFgk3I8fTQDhGEY -BEFRR8lRBxEEQRAE4/G43++v12v+/TEXBCe0IZECeZ4XhmGxXS8S1tjzPNd1B4MBu8BISp2Dx4Nm -qwWKjD2tjgqIlaZpmlEUweliHEb19Xrd9/2np6fJZEKvnN4RJ0fCF0Zw+pzgD8E9IVEUQf9ZngsL -qqq2Wq3pdPr4+Ag7YBN16cLzZlIswekOWaC43W7Xdd38fe0RdyFJkmVZ3W6XtgJnC+aEkGL9dGEE -s0mtxKywDIKg0+nAgZRClF/gkRDSarUajQZ7xl3iHi/ORLPma7vdqqrabDaF7vvu+75lWfQYeB6C -LFLg2GfV1zCMbrdLDzxjDaAQhV96kYZh3N7e0mFaeCxdGMFsJynDMDqdDnugTiKc5pnRdBioKEqr -1YIYovBEmeQvDlaDJUlyHKfT6STSXLE2rezMAprNZq1W23cjuaUGJDdxJCQCwYjnee12u6wNDa+v -r8Mw3Dcm8uE4PxPN2mSIsGq12s3NjViK+908sFarQWidkEBuAzo/gmm+C3derVajKJLKCxpJ+L4P -BzImAq584q/8TDSbHVqWBbqbCFXKpL5sBlyv14MgSGcH5THRbMXKMIx2uw0vi5odyi0Eo0/CMPR9 -P/91ZLlG0XEc67p+e3vLlicFSnaPM9H0ZRRFtm3nPI5JnncL9bx08VkSsJvOd1Mp8E2wJLRUBLO0 -NRqNA8fnlMlE75MDcJznBklyjgG784B2z/M8zyulpn5dODBXRpNjdm7xwOQpLwSzUSLLIiHEMIxG -o4EHMwCCIKhWq4kMAqjNXAHIOWxRYpZXluVms0kH6cUqMSuim5sb1ludbwXuuUw0HZKSJF1fX9Ob -Yd+/WMD8cbPZzCGVIOfTXZjrNU2TXQ15DiskqBJblhUEgXTmbbEk87GZKOI0Go20n75ADU7oKLVt -qqrSdlKJgIvfNImu00jvP7hY47yzhkUICcMQ3gTLl3k3CHK+0aqqKjtZhtg5uF3XhXXBZ+o1c5Yo -GkZrFEUXHkx9EQkvxrUPprbItm3HcZDgr8AwDN/3z+TFSObqC0/q9Tqy+3Wh1et1+jLbcw+zj6Il -SbJt27ZtZO7rQlNVtVarCaDBMB6vrq5QfTkRWvYm2rIsoRevF5IfwxnorutmviIgew2G9UeIb8Wk -NHDJfKtLxgRrmgZ7sLAYeUR+rGma4zj8mug4jmm4jz74OCS6GHBEMEwz0D2fiONQqVSyXdOTGcGy -LFcqlQMrchBfBGx751GD2XIM4mhALM0dwZqmYXaUlSQzbEuSGcHVahVn8jPJibO10pkR7Lpu4e0K -SpMvZWgLsyEYrIoQrf2EgKqqWXGcDcE4tZA5aM+e4gmO4zirq0FQZFXSIqezSwjJp/HrpVnpTCoe -pxIMDXJUVUVKMkcmbjgDE40O+HwEn74Sj2R4HYhsYZomLEBOdDrNm2DTNDE1Ogc0TVMUhW2FcIQi -nUqwYRjFdnIuN2zbPtE6ktNHGdJwPrCb9oohmF2Vj8gcp886nEQwbB6UsDx5Npx+MBQp/AoQB6Cq -aqJnTa4EE0Iwwsohli6MYFH6sl+ylT6JYKxQ5hlIH4f/BgD7inc8EZgGUgAAAABJRU5ErkJggg== - - -XWiki.XWikiUserSheet -0 -XWiki.JavaScriptExtension -4a317e5c-a75e-4dec-aad0-1f80ffde5124 - -long - - -Object.extend(XWiki, { - userprofile : { - - init : function() { - if ($('avatar')) { - Event.observe($('avatar'), 'mouseover', function() { XWiki.userprofile.displayChangePhoto('true') }); - Event.observe($('avatar'), 'mouseout', function() { XWiki.userprofile.displayChangePhoto('false') }); - XWiki.userprofile.adjustTabsContainerHeight(); - } - }, - - /* - ** This ugly hack is used as a workaround for IE6 box model (3px jog bug) which prevent from - ** putting the separating border between tabs and panes on the pane div. We put the border - ** on the tabs container and adjust its size depending on the size of the right pane. - ** FIXME: find a better mechanism for tabbed UIs / drop this hack when stopping IE6 support. - */ - adjustTabsContainerHeight: function() { - var currentPane; - $("vertical-panes").select("div.vertical-pane").each(function(pane){ - if(!pane.hasClassName('hidden')) { - currentPane = pane; - } - }); - if (currentPane.getHeight() > $('vertical-tabs').getHeight()) { - $('vertical-tabs').setStyle({ height: currentPane.getHeight() + 'px' }); - } else { - $('vertical-tabs').setStyle({ height: '' }); - } - }, - - displayChangePhoto : function(display) { - var changePhoto = $('avatarUpload'); - if (display == true) { - changePhoto.removeClassName('hidden'); - } else { - changePhoto.addClassName('hidden'); - } - }, - - switchTab : function(tab) { - $("vertical-panes").select("div.vertical-pane").each(function(pane){ - pane.addClassName('hidden'); - }); - $('vertical-tabs').setStyle({ height: '' }); - $(tab + 'Pane').removeClassName('hidden'); - $("vertical-tabs").select("li.vertical-tab").each(function(tab){ - tab.removeClassName('active'); - }); - $(tab + 'Tab').addClassName('active'); - XWiki.userprofile.adjustTabsContainerHeight(); - } - } -}); - -Event.observe(window, 'load', function() { XWiki.userprofile.init() }); - - -userprofile - - -0 - - -onDemand - - - - -XWiki.SheetClass - - - - - - - - -0 -defaultEditMode -1 -Default Edit Mode -15 -0 -com.xpn.xwiki.objects.classes.StringClass - - -XWiki.XWikiUserSheet -0 -XWiki.SheetClass -03ac24bd-55c2-4ce2-b80a-9b4ecf5f5282 - - - - - -XWiki.XWikiUserSheet -0 -XWiki.StyleSheetExtension -30c9f7e7-0b53-468b-a254-645d035d9416 - -long - - -#template("colorThemeInit.vm") -#set($tabswidth = "130px") - -td.recentChangesLeft, .recentChangesMoreActions { - display:none; -} - -td.recentChangesRight { - padding: 0 !important; -} - -#profilePane .column h1 { - font-weight:bold; - font-size:115%; - margin:10px 0; -} - -#profilePane .column h2 { - font-size: 110%; -} - -div.userInfo, div.userRecentChanges, div.userPreferences, div.passwordManagement, div.watchlistManagement, div.watchlistRss, div.watchlistElements { - margin: 5px 10px 10px; - padding: 5px 10px 10px; -} - -div.userInfo, div.userPreferences, div.watchlistManagement { - background-color: $theme.backgroundSecondaryColor; -} - -.userInfo img { - max-width: 100%; -} - -div.userInfo input[type="text"], div.userInfo input[type="password"], div.userInfo textarea, div.userInfo select, div.userPreferences select { - width: 100%; -} - -div.editProfileCategory { - float:right; -} - -div.editProfileCategory a { - display:block; - width: 16px; - height: 16px; - background: url($xwiki.getSkinFile('icons/silk/pencil.gif')) no-repeat; -} - -/* Watchlist */ - -#watchlistRssLink { - background: url($xwiki.getSkinFile('icons/xwiki/rss-medium.png')) no-repeat; - padding-left: 18px; - font-weight: bold; -} - -span.wikiWatchlistType, span.spaceWatchlistType, span.pageWatchlistType { - width: 16px; - height: 16px; - display: block; -} - -span.wikiWatchlistType { - background: url($xwiki.getSkinFile('icons/silk/world.gif')) no-repeat; -} - -span.spaceWatchlistType { - background: url($xwiki.getSkinFile('icons/silk/folder.gif')) no-repeat; -} - -span.pageWatchlistType { - background: url($xwiki.getSkinFile('icons/silk/page_white_text.gif')) no-repeat; -} - -/* Tabs */ - -div#vertical-panes { - margin-top: 10px; -} - -span#avatarUpload { - display:block; - width:$tabswidth; - position:absolute; - font-size: 10px; - font-weight: bold; - background-color: white; -} - -#vertical-tabs { - float:left; - width:$tabswidth; - border-right: solid 1px $theme.menuBackgroundColor; -} - -#vertical-tabs ul { - margin:0; - margin-top:5px; - padding:0; - border-right:0; - border-bottom:0; - border-left:0; -} - -#vertical-tabs ul li { - display: block; - list-style-type: none; - list-style-position: outside; - margin:0; - border: solid 1px $theme.pageContentBackgroundColor; - border-right: 0; -} - -#vertical-tabs ul li img { - float:left; - margin-right:4px; - vertical-align:middle; -} - -#vertical-tabs ul li span { - line-height:1.5em; -} - -#vertical-tabs ul li.active { - border: solid 1px $theme.menuBackgroundColor; - border-right: 0px; -} - -#vertical-tabs ul li a { - padding: 3px 0px 3px 10px; - text-decoration: none; - display:block; - color:$theme.menuBackgroundColor; -} - -#vertical-tabs ul li.active a { - text-decoration: none; - position:relative; - left:1px; - background:$theme.pageContentBackgroundColor; - color: $theme.textColor; - padding-left: 9px; -} - -.vertical-pane { - margin-left:$tabswidth; - padding: 10px; - padding-top: 0; -} - -.vertical-pane .column { - overflow: hidden; -} - - -userprofile - - -1 - - -onDemand - - -{{velocity}} -## -## Extensions and vars -## -##$xwiki.ssx.use("XWiki.XWikiUserSheet")## -##$xwiki.jsx.use("XWiki.XWikiUserSheet")## -#set($obj = $doc.getObject("XWiki.XWikiUsers")) -## -## Categories -## -#set($categories = $util.arrayList) -#set($discard = $categories.add(['profile', $msg.get('platform.core.profile.category.profile'), 'XWiki.XWikiUserProfileSheet', 'icons/silk/vcard.gif'])) -#set($isMyProfile = ($xcontext.user == $doc.fullName)) -#if($isMyProfile || $hasAdmin) - #set($discard = $categories.add(['preferences', $msg.get('platform.core.profile.category.preferences'), 'XWiki.XWikiUserPreferencesSheet', 'icons/silk/wrench.gif'])) -#end -## TODO: add APIs to be able to display users watchlists to admins -#if($isMyProfile && $hasWatch) - #set($discard = $categories.add(['watchlist', $msg.get('platform.core.profile.category.watchlist'), 'XWiki.XWikiUserWatchListSheet', 'icons/silk/star.gif'])) -#end -## -## Avatar -## -#set($avatarURL = '') -#if($obj.getProperty("avatar") && $obj.getProperty("avatar").getValue() != '') - #foreach ($attach in $doc.attachmentList) - #if($attach.filename == $obj.getProperty("avatar").getValue()) - #set($avatarURL = "$doc.getAttachmentURL($attach.filename, 'download', 'width=120')") - #end - #end -#end -#if("$!avatarURL" == '') - #set($avatarURL = $xwiki.getDocument("XWiki.XWikiUserSheet").getAttachmentURL('noavatar.png', 'download', 'width=120')) -#end -## -## Current category -## -#set($currentCategory = "$!request.category") -#if($currentCategory == "") - #set($currentCategory = $listtool.get($listtool.get($categories, 0), 0)) -#end -## -## Display -## -{{html clean="false"}} - <div id="vertical-panes"> - ## - ## Tabs - ## - <div id="vertical-tabs"> - <div id="avatar"> - <span id="avatarUpload" class="hidden">$msg.get('platform.core.profile.changePhoto')</span> - <a href="$doc.getURL('edit', 'xpage=changemyavatar')" ><img class="photo" id="xwikiuseravatar" alt="$doc.display('first_name', 'view', $obj)" src="$avatarURL"/></a> - </div> - <div> - <ul> - #foreach($tab in $categories) - #set($tabKey = $listtool.get($tab, 0)) - #set($tabName = $listtool.get($tab, 1)) - #set($tabIcon = $listtool.get($tab, 3)) - <li id="${tabKey}Tab" class="vertical-tab#if($tabKey == $currentCategory) active#end"><a href="?category=${tabKey}"><img src="$xwiki.getSkinFile($tabIcon)" alt="$tabName" /><span>$tabName</span></a><script type="text/javascript">Event.observe($("${tabKey}Tab"), 'click', function(event) { XWiki.userprofile.switchTab("${tabKey}"); Event.stop(event); });</script></li> - #end - </ul> - </div> - </div> - ## - ## Panes - ## - #foreach($tab in $categories) - #set($tabKey = $listtool.get($tab, 0)) - #set($tabInclude = $listtool.get($tab, 2)) - <div id="${tabKey}Pane" class="vertical-pane#if($tabKey != $currentCategory) hidden#end"> -{{/html}} - -{{include document="${tabInclude}" /}} - -{{html clean="false"}} - </div> - #end - <div class="clearfloats">&nbsp;</div> - </div> -{{/html}} -{{/velocity}} diff --git a/src/main/webapp/docs/xwiki/XWiki/XWikiUserTemplate.xml b/src/main/webapp/docs/xwiki/XWiki/XWikiUserTemplate.xml deleted file mode 100644 index d0b083c95..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/XWikiUserTemplate.xml +++ /dev/null @@ -1,25 +0,0 @@ - - -XWiki -XWikiUserTemplate - -en -0 -XWiki.XWikiUsers -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1106311618000 -1265297862000 -1265297862000 -1.1 - - - - -Imported from XAR -false -xwiki/2.0 -false -{{include document="XWiki.XWikiUserSheet"/}} diff --git a/src/main/webapp/resources/js/xwiki/xwiki-misc.js b/src/main/webapp/resources/js/xwiki/xwiki-misc.js new file mode 100644 index 000000000..8aa2ead2f --- /dev/null +++ b/src/main/webapp/resources/js/xwiki/xwiki-misc.js @@ -0,0 +1,16 @@ +/** this are js-snippets moved to disk from xwiki-sheets on + * dropping skinx plugins **/ +document.observe('dom:loaded', function () { + var switcher = $('classname'); + if (typeof (switcher) != 'undefined') { + switcher.observe('change', function () { + var value = this.options[this.selectedIndex].value; + if (value != '-') { + window.self.location = value; + } + }.bindAsEventListener(switcher)); + switcher.up('form').down("input[type='submit']").hide(); + } +}); + + diff --git a/src/main/webapp/templates/editpanelsvars.vm b/src/main/webapp/templates/editpanelsvars.vm index 7e9ec6b59..1c13cac6f 100644 --- a/src/main/webapp/templates/editpanelsvars.vm +++ b/src/main/webapp/templates/editpanelsvars.vm @@ -2,7 +2,7 @@ #set($editorPanelsWiki = "Panels.DocumentInformation,Panels.EditTranslations,Panels.SyntaxHelp") #set($editorPanelsWysiwyg = "Panels.DocumentInformation,Panels.EditTranslations,Panels.SyntaxHelp") #set($editorPanelsObjects = "Panels.ObjectEditorWelcome,Panels.AddObject") -#set($editorPanelsClass = "Panels.AddClassProperty,Panels.ClassSwitcher") +#set($editorPanelsClass = "Panels.ClassEditorWelcome,Panels.AddClassProperty,Panels.ClassSwitcher") #set($editorPanelsRights = "Panels.RightsEditorWelcome,Panels.RightsTips") ## No Panels for the history editor mode in Albatross -#set($editorPanelsHistory = "") \ No newline at end of file +#set($editorPanelsHistory = "") diff --git a/src/main/webapp/templates/javascript.vm b/src/main/webapp/templates/javascript.vm index d8022e283..da43ccb5c 100644 --- a/src/main/webapp/templates/javascript.vm +++ b/src/main/webapp/templates/javascript.vm @@ -25,6 +25,7 @@ $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/notifi $services.css.includeCSSPage(':uicomponents/widgets/notification.css')## $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/list/xlist.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/suggest/suggest.js'))## +$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki-misc.js #if($xwiki.exists('XWiki.SearchSuggestConfig')) ## Hook to request the search suggest script if search suggest configuration is present. ## We can't just have it as a always-use SSX yet since we compute a hash to be sure to refresh From 253a998d61fc4bc5e2abf870f0edf7a68737b52b Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Tue, 10 Mar 2026 11:51:49 +0100 Subject: [PATCH 04/56] replace object delet and edit icons --- .../js/xwiki/editors/dataeditors.css | 369 +++++++++++++++--- 1 file changed, 314 insertions(+), 55 deletions(-) diff --git a/src/main/webapp/resources/js/xwiki/editors/dataeditors.css b/src/main/webapp/resources/js/xwiki/editors/dataeditors.css index 99c2cd78c..20e2f83a1 100644 --- a/src/main/webapp/resources/js/xwiki/editors/dataeditors.css +++ b/src/main/webapp/resources/js/xwiki/editors/dataeditors.css @@ -1,55 +1,314 @@ -#template('colorThemeInit.vm') #xwikiobjects,#xwikiclassproperties{padding:0 8px;overflow:auto;border:none!important;} -#body #xwikiobjects label,#body #xwikiclassproperties label{display:inline;text-transform:none;font-variant:normal;color:$theme.textPrimaryColor;} -#xwikiobjects input,#xwikiobjects textarea,#xwikiclassproperties input,#xwikiclassproperties textarea{border:1px solid $theme.borderColor;width:90%;} -.boolean-property input{width:auto!important;border:none!important;} -#xwikiobjects input:hover,#xwikiobjects textarea:hover,#xwikiobjects input:focus,#xwikiobjects textarea:focus,#xwikiclassproperties input:hover,#xwikiclassproperties textarea:hover,#xwikiclassproperties input:focus,#xwikiclassproperties textarea:focus{border:1px solid $theme.textPrimaryColor;} -#xwikiobjects input:focus,#xwikiobjects textarea:focus,#xwikiclassproperties input:focus,#xwikiclassproperties textarea:focus{background-color:$theme.highlightColor;} -.more-actions{padding:8px 2px;} -.more-actions .edit-all{display:block;padding:2px 18px;background:transparent url($xwiki.getSkinFile('icons/silk/pencil.gif', true)) left top no-repeat;} -.xclass-title{margin:16px 0 2px;} -.xclass-title h2,xproperty-title h2{border:none;font-weight:bold;font-size:100%;margin:0;padding:0;} -.xclass-content{padding:0 0 0 16px;margin:0 0 10px 0;} -.xobject-title{position:relative;border:none;cursor:default;background:transparent;} -.xobject:hover .xobject-title,.xproperty:hover .xproperty-title{background-color:$theme.highlightColor;color:$theme.textPrimaryColor;} -.xobject-title h3{border:none;font-size:100%;font-weight:100;margin:0;padding:4px 4px 4px 10px;border:none;} -.xobject-content{padding:4px 14px 8px;border:none;margin-bottom:2px;} -.xobject dl,.xproperty dl{margin:0;} -.xobject-content dt,.xproperty-content dt{font-size:75%;font-weight:bold;} -#body .xobject-title h3,#body .xclass-title{padding-left:14px;} -.xobject-title:hover,.xclass-title:hover,.xproperty-title:hover{cursor:default;} -.xobject-action{display:block;overflow:hidden;position:absolute;top:2px;width:16px;height:16px;text-indent:30px;line-height:30px;background:transparent left top no-repeat;} -.xobject-title .delete{right:0;background-image:url($xwiki.getSkinFile('icons/silk/cross.gif', true));} -.xobject-title .edit{right:16px;background-image:url($xwiki.getSkinFile('icons/silk/pencil.gif', true));} -.xproperty{border:none;} -.xproperty-content{padding:4px 16px 8px 16px;margin-bottom:2px;} -.xproperty-content dl{margin:0;padding-left:16px;} -.xproperty-title{cursor:default;padding:0;overflow:hidden;} -.xproperty-title .xproperty-property{float:left;margin-right:8px;} -.xproperty_number_input input{width:2em;} -.xproperty-title h2{display:block;padding:2px;padding-left:32px;margin:0;font-size:1em;font-weight:100;background:transparent url($xwiki.getSkinFile('icons/datamodel/propertyType-Generic.png', true)) 14px center no-repeat;min-height:16px;} -.xproperty-title label{font-size:60%;line-height:1em;} -.xproperty-content{clear:both;} -.xproperty-title .xproperty-prettyName{float:none;clear:both;} -.xobject-content dt,.xproperty-content dt{font-size:75%;font-weight:bold;} -.xobject-content dd,.xproperty-content dd{margin:0 0 4px;} -#body .collapsable .xobject-title h3,#body .collapsable .xclass-title,#body .collapsable .xproperty-title{background-image:url($xwiki.getSkinFile('icons/silk/bullet_toggle_minus.gif', true));background-position:0 center;background-repeat:no-repeat;} -#body .collapsed .xobject-title h3,#body .collapsed .xclass-title,#body .collapsed .xproperty-title{background-image:url($xwiki.getSkinFile('icons/silk/bullet_toggle_plus.gif', true));} -.xclass.collapsed .xclass-content,.xobject.collapsed .xobject-content,.xproperty.collapsed .xproperty-content{display:none;} -.collapsable dt .collapser{background-image:url($xwiki.getSkinFile('icons/silk/bullet_toggle_minus.gif', true));background-position:-4px center;background-repeat:no-repeat;cursor:default;width:10px;height:10px;padding-left:10px;} -#xwikiobjects .collapsable dd{padding-left:10px;} -#xwikiclassproperties .collapsable dt{margin-left:-10px;} -.collapsable dt .collapsed{background-image:url($xwiki.getSkinFile('icons/silk/bullet_toggle_plus.gif', true));} -.xproperty-title .move{display:block;overflow:hidden;position:absolute;right:0;top:2px;padding:2px;cursor:move;} -.dragged .xproperty-title{border:1px solid $theme.borderColor;} -.StringClass h2{background-image:url($xwiki.getSkinFile('icons/datamodel/string.png', true));} -.DateClass h2{background-image:url($xwiki.getSkinFile('icons/datamodel/calendar.png', true));} -.TextAreaClass h2{background-image:url($xwiki.getSkinFile('icons/datamodel/textarea.png', true));} -.NumberClass h2{background-image:url($xwiki.getSkinFile('icons/datamodel/number.png', true));} -.BooleanClass h2{background-image:url($xwiki.getSkinFile('icons/datamodel/boolean.png, true'));} -.StaticListClass h2{background-image:url($xwiki.getSkinFile('icons/datamodel/staticlist.png, true'));} -.GroupsClass h2{background-image:url($xwiki.getSkinFile('icons/datamodel/groups.png, true'));} -.UsersClass h2{background-image:url($xwiki.getSkinFile('icons/datamodel/users.png', true));} -.LevelsClass h2{background-image:url($xwiki.getSkinFile('icons/datamodel/rights.png', true));} -.DBListClass h2{background-image:url($xwiki.getSkinFile('icons/datamodel/database.png', true));} -.DBTreeListClass h2{background-image:url($xwiki.getSkinFile('icons/datamodel/tree.png', true));} -.PasswordClass h2{background-image:url($xwiki.getSkinFile('icons/datamodel/password.png', true));} \ No newline at end of file +#template('colorThemeInit.vm') #xwikiobjects, +#xwikiclassproperties { + padding: 0 8px; + overflow: auto; + border: none !important; +} + +#body #xwikiobjects label, +#body #xwikiclassproperties label { + display: inline; + text-transform: none; + font-variant: normal; + color: $theme.textPrimaryColor; +} + +#xwikiobjects input, +#xwikiobjects textarea, +#xwikiclassproperties input, +#xwikiclassproperties textarea { + border: 1px solid $theme.borderColor; + width: 90%; +} + +.boolean-property input { + width: auto !important; + border: none !important; +} + +#xwikiobjects input:hover, +#xwikiobjects textarea:hover, +#xwikiobjects input:focus, +#xwikiobjects textarea:focus, +#xwikiclassproperties input:hover, +#xwikiclassproperties textarea:hover, +#xwikiclassproperties input:focus, +#xwikiclassproperties textarea:focus { + border: 1px solid $theme.textPrimaryColor; +} + +#xwikiobjects input:focus, +#xwikiobjects textarea:focus, +#xwikiclassproperties input:focus, +#xwikiclassproperties textarea:focus { + background-color: $theme.highlightColor; +} + +.more-actions { + padding: 8px 2px; +} + +.more-actions .edit-all { + display: block; + padding: 2px 18px; + background: transparent url($xwiki.getSkinFile('icons/silk/pencil.gif', true)) left top no-repeat; +} + +.xclass-title { + margin: 16px 0 2px; +} + +.xclass-title h2, +xproperty-title h2 { + border: none; + font-weight: bold; + font-size: 100%; + margin: 0; + padding: 0; +} + +.xclass-content { + padding: 0 0 0 16px; + margin: 0 0 10px 0; +} + +.xobject-title { + position: relative; + border: none; + cursor: default; + background: transparent; +} + +.xobject:hover .xobject-title, +.xproperty:hover .xproperty-title { + background-color: $theme.highlightColor; + color: $theme.textPrimaryColor; +} + +.xobject-title h3 { + border: none; + font-size: 100%; + font-weight: 100; + margin: 0; + padding: 4px 4px 4px 10px; + border: none; +} + +.xobject-content { + padding: 4px 14px 8px; + border: none; + margin-bottom: 2px; +} + +.xobject dl, +.xproperty dl { + margin: 0; +} + +.xobject-content dt, +.xproperty-content dt { + font-size: 75%; + font-weight: bold; +} + +#body .xobject-title h3, +#body .xclass-title { + padding-left: 14px; +} + +.xobject-title:hover, +.xclass-title:hover, +.xproperty-title:hover { + cursor: default; +} + +.xobject-action { + display: block; + overflow: hidden; + position: absolute; + top: 2px; + width: 16px; + height: 16px; + text-indent: 30px; + line-height: 30px; + background: transparent left top no-repeat; +} + +.xobject-title .delete { + right: 0; + background-image: url('/file/resources/icons/silk/cross.gif'); +} + +.xobject-title .edit { + right: 16px; + background-image: url('/file/resources/icons/silk/pencil.gif'); +} + +.xproperty { + border: none; +} + +.xproperty-content { + padding: 4px 16px 8px 16px; + margin-bottom: 2px; +} + +.xproperty-content dl { + margin: 0; + padding-left: 16px; +} + +.xproperty-title { + cursor: default; + padding: 0; + overflow: hidden; +} + +.xproperty-title .xproperty-property { + float: left; + margin-right: 8px; +} + +.xproperty_number_input input { + width: 2em; +} + +.xproperty-title h2 { + display: block; + padding: 2px; + padding-left: 32px; + margin: 0; + font-size: 1em; + font-weight: 100; + background: transparent url($xwiki.getSkinFile('icons/datamodel/propertyType-Generic.png', true)) 14px center no-repeat; + min-height: 16px; +} + +.xproperty-title label { + font-size: 60%; + line-height: 1em; +} + +.xproperty-content { + clear: both; +} + +.xproperty-title .xproperty-prettyName { + float: none; + clear: both; +} + +.xobject-content dt, +.xproperty-content dt { + font-size: 75%; + font-weight: bold; +} + +.xobject-content dd, +.xproperty-content dd { + margin: 0 0 4px; +} + +#body .collapsable .xobject-title h3, +#body .collapsable .xclass-title, +#body .collapsable .xproperty-title { + background-image: url($xwiki.getSkinFile('icons/silk/bullet_toggle_minus.gif', true)); + background-position: 0 center; + background-repeat: no-repeat; +} + +#body .collapsed .xobject-title h3, +#body .collapsed .xclass-title, +#body .collapsed .xproperty-title { + background-image: url($xwiki.getSkinFile('icons/silk/bullet_toggle_plus.gif', true)); +} + +.xclass.collapsed .xclass-content, +.xobject.collapsed .xobject-content, +.xproperty.collapsed .xproperty-content { + display: none; +} + +.collapsable dt .collapser { + background-image: url($xwiki.getSkinFile('icons/silk/bullet_toggle_minus.gif', true)); + background-position: -4px center; + background-repeat: no-repeat; + cursor: default; + width: 10px; + height: 10px; + padding-left: 10px; +} + +#xwikiobjects .collapsable dd { + padding-left: 10px; +} + +#xwikiclassproperties .collapsable dt { + margin-left: -10px; +} + +.collapsable dt .collapsed { + background-image: url($xwiki.getSkinFile('icons/silk/bullet_toggle_plus.gif', true)); +} + +.xproperty-title .move { + display: block; + overflow: hidden; + position: absolute; + right: 0; + top: 2px; + padding: 2px; + cursor: move; +} + +.dragged .xproperty-title { + border: 1px solid $theme.borderColor; +} + +.StringClass h2 { + background-image: url($xwiki.getSkinFile('icons/datamodel/string.png', true)); +} + +.DateClass h2 { + background-image: url($xwiki.getSkinFile('icons/datamodel/calendar.png', true)); +} + +.TextAreaClass h2 { + background-image: url($xwiki.getSkinFile('icons/datamodel/textarea.png', true)); +} + +.NumberClass h2 { + background-image: url($xwiki.getSkinFile('icons/datamodel/number.png', true)); +} + +.BooleanClass h2 { + background-image: url($xwiki.getSkinFile('icons/datamodel/boolean.png, true')); +} + +.StaticListClass h2 { + background-image: url($xwiki.getSkinFile('icons/datamodel/staticlist.png, true')); +} + +.GroupsClass h2 { + background-image: url($xwiki.getSkinFile('icons/datamodel/groups.png, true')); +} + +.UsersClass h2 { + background-image: url($xwiki.getSkinFile('icons/datamodel/users.png', true)); +} + +.LevelsClass h2 { + background-image: url($xwiki.getSkinFile('icons/datamodel/rights.png', true)); +} + +.DBListClass h2 { + background-image: url($xwiki.getSkinFile('icons/datamodel/database.png', true)); +} + +.DBTreeListClass h2 { + background-image: url($xwiki.getSkinFile('icons/datamodel/tree.png', true)); +} + +.PasswordClass h2 { + background-image: url($xwiki.getSkinFile('icons/datamodel/password.png', true)); +} From 1e47dc2ce88841290835cf8dc0639d437a78dd00 Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Tue, 10 Mar 2026 11:58:00 +0100 Subject: [PATCH 05/56] velocity syntax in javascript.vm --- src/main/webapp/templates/javascript.vm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/webapp/templates/javascript.vm b/src/main/webapp/templates/javascript.vm index da43ccb5c..cf577ccaf 100644 --- a/src/main/webapp/templates/javascript.vm +++ b/src/main/webapp/templates/javascript.vm @@ -25,7 +25,7 @@ $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/notifi $services.css.includeCSSPage(':uicomponents/widgets/notification.css')## $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/list/xlist.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/suggest/suggest.js'))## -$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki-misc.js +$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki-misc.js'))## #if($xwiki.exists('XWiki.SearchSuggestConfig')) ## Hook to request the search suggest script if search suggest configuration is present. ## We can't just have it as a always-use SSX yet since we compute a hash to be sure to refresh From 4ffa4f0b5148ac177c1851ed534c2ec83a6552a6 Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Tue, 10 Mar 2026 12:04:30 +0100 Subject: [PATCH 06/56] drop Panels.SyntaxHelp --- .../docs/celements2web/Panels/SyntaxHelp.xml | 185 ------------------ src/main/webapp/templates/editpanelsvars.vm | 4 +- 2 files changed, 2 insertions(+), 187 deletions(-) delete mode 100644 src/main/webapp/docs/celements2web/Panels/SyntaxHelp.xml diff --git a/src/main/webapp/docs/celements2web/Panels/SyntaxHelp.xml b/src/main/webapp/docs/celements2web/Panels/SyntaxHelp.xml deleted file mode 100644 index 0a2ad4179..000000000 --- a/src/main/webapp/docs/celements2web/Panels/SyntaxHelp.xml +++ /dev/null @@ -1,185 +0,0 @@ - - -Panels -SyntaxHelp - -en -0 -Panels.WebHome -XWiki.Admin -xwiki:XWiki.msladek - -xwiki:XWiki.msladek -1153995199000 -1539796419000 -1539796419000 -1.1 -XWiki syntax help - - - -Imported from XAR -false -xwiki/1.0 -false -img.png -959 -XWiki.Admin -1203518471000 -1.1 -iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAAAAADgE0Q3AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAA -CxMAAAsTAQCanBgAAAAHdElNRQfWBxcOEy+3/bdlAAADUElEQVRIx52WTW/cVBSG32tfezxJZiaT -0EwnCkVKgVZI3cFAVYkFLEFCKoI/wz9Bgh/ApqqEWLQLFmUHAtJKqKIqMKhSJ50R+aCTTHzPey4L -2/PVIru9C8u6Po/f83XtYzxefAUvwcACAMZPjrXc1gfJVm0VgPHA+HCQGmOMKcfQ6jYypeO/jQ1t -WAGCng1sHRY4ehzYuBbUwzIojb1nOkmMBf5xNonW46iCUhoxPY3WLPBvEK826lFQAUq8xhawgNrE -1muBqZJsFwVQWMAE8Vq0xIxv7a+rjhN38Z3Ezu3HQORgPO6G7VYSLjD9Gx92SJK8e//z15KFF3qJ -AgBmOZz+d5+ec8455+TSe18/mCw8NEAAPFvXGx9Z55yIiHPr79/suwq9d+fd0ImIc86JuFbrx5Ev -hwY7LndORCS9uPfo7HkNu7goQiWZXWhOn5wmpZB3M4JK6kTKleAKHVGSozAMKkCS6YiSSh4mjbiy -Uu4b03qjVpq98eMs3yLihCKj+lpUqvRzV0hRKkmlsjV8epaUKR2tO+co4kQoItJ1fx2Vutc9dCJ5 -F4mI7FPKO2JrNI+IjNrbjVLovP81s6aIk8HoaXc7KYXsZ40D5hhl8OjC5XNhKWQ2r0ym7k2423ur -gfLixu2sGZTKk/obVzq2AgRkZVKqnq502hZVoFcPEyU9VVVXl3vo//4aTVJIISmTqBaiktKBcapU -VVXWrKkGfdNkjmhkjDcVoOGXJioYjf54uL1iyqDht7+3QdUsD/TRzb2Pdxc/lzAe9+xGM9/t//bL -SQuFilIzsvN275VZaC6ag/o//MkVy4Iorqr0Pn7zg0tJsAyN7txn02R29My8o5+iCC/0crkCSm/3 -NyLmZizc0iIyVQAIbOdarxMUUP2r8wHpqXO+Kf0UmZ7BcOuLTbjIAsDDDQinxpr7VUQ2d2w5fLBZ -pHzsnV8MfuagLhx1OZjWSZpHupjnWUyLVdxJ84Y1uPa6kJSsRUmhZvdcZnD1kxyqAX6XuX1mKxSK -yDNML/sVGo/RsN38CXv76mflVFX1y8jOVVwHXBgYj5NR1EqC732+FF7hvX/OTHd91ns4OV4tn3Gm -+QsNjAcwUSSm2vBhYTIlAGk1xmQzinmZcfQ/40v+ffqYGLoAAAAASUVORK5CYII= - - - -Panels.PanelClass - - - - - - - - -0 -0 -select -0 -category -5 -Category -0 - - ,| -1 -0 -Information|Navigation|Tools|Administration|Other -com.xpn.xwiki.objects.classes.StaticListClass - - -0 -Text -content -4 -Content -25 -60 -0 -com.xpn.xwiki.objects.classes.TextAreaClass - - -0 -Text -description -3 -Description -5 -40 -0 -com.xpn.xwiki.objects.classes.TextAreaClass - - -0 -name -1 -Name -40 -0 -com.xpn.xwiki.objects.classes.StringClass - - -0 -0 -select -0 -type -2 -Panel type -0 - - ,| -1 -0 -view|edit -com.xpn.xwiki.objects.classes.StaticListClass - - -Panels.SyntaxHelp -0 -Panels.PanelClass -7d78bddb-56fc-4cc0-87a7-f6050ae66786 - -Information - - -#largepanelheader($msg.get("xe.panels.syntax.help")) -#set ($syntaxDoc = $xwiki.getDocument("XWiki.XWikiSyntax")) -#if ($syntaxDoc.isNew()) - #set ($url = "http://platform.xwiki.org/xwiki/bin/view/Main/XWikiSyntax?xpage=print") -#else - #set ($url = $xwiki.getURL("XWiki.XWikiSyntax", "view", "xpage=print")) -#end -$msg.get("helponsyntax") <a href="$url" onclick="openURL('$url', '_blank'); return false;"><span class="nobr">$msg.get("xwikisyntax")</span></a> -#panelfooter() - - -Displays information on the XWiki syntax. - - -Syntax help - - -edit - - - - -XWiki.TagClass - - - - - - - - -0 -0 -checkbox -1 -tags -1 -Tags -1 - - ,| -30 -0 - -com.xpn.xwiki.objects.classes.StaticListClass - - -Panels.SyntaxHelp -0 -XWiki.TagClass -041947c1-9c4b-4f63-8b66-47ea8ebc1589 - - - - -#includeForm("Panels.PanelSheet") diff --git a/src/main/webapp/templates/editpanelsvars.vm b/src/main/webapp/templates/editpanelsvars.vm index 1c13cac6f..66bcfe102 100644 --- a/src/main/webapp/templates/editpanelsvars.vm +++ b/src/main/webapp/templates/editpanelsvars.vm @@ -1,6 +1,6 @@ ## Define variables containing the list of edit panels for the Albatross skin -#set($editorPanelsWiki = "Panels.DocumentInformation,Panels.EditTranslations,Panels.SyntaxHelp") -#set($editorPanelsWysiwyg = "Panels.DocumentInformation,Panels.EditTranslations,Panels.SyntaxHelp") +#set($editorPanelsWiki = "Panels.DocumentInformation,Panels.EditTranslations") +#set($editorPanelsWysiwyg = "Panels.DocumentInformation,Panels.EditTranslations") #set($editorPanelsObjects = "Panels.ObjectEditorWelcome,Panels.AddObject") #set($editorPanelsClass = "Panels.ClassEditorWelcome,Panels.AddClassProperty,Panels.ClassSwitcher") #set($editorPanelsRights = "Panels.RightsEditorWelcome,Panels.RightsTips") From 54e787ca1895b548a369fd6538ca4db25dd7cfd1 Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Tue, 10 Mar 2026 14:52:18 +0100 Subject: [PATCH 07/56] add missing services.css.displayAllCSS() --- src/main/webapp/templates/stylesheets.vm | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/webapp/templates/stylesheets.vm b/src/main/webapp/templates/stylesheets.vm index c0d86de46..db7928c33 100644 --- a/src/main/webapp/templates/stylesheets.vm +++ b/src/main/webapp/templates/stylesheets.vm @@ -24,3 +24,4 @@ #end #end #end +$services.css.displayAllCSS() From 37567d583ea6a6feca15bf745a7b6739e84ff3e8 Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Tue, 10 Mar 2026 15:00:28 +0100 Subject: [PATCH 08/56] move stylesheets.vm after javascript.vm --- src/main/webapp/templates/htmlheader.vm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/webapp/templates/htmlheader.vm b/src/main/webapp/templates/htmlheader.vm index 677d5c073..bd221ba38 100644 --- a/src/main/webapp/templates/htmlheader.vm +++ b/src/main/webapp/templates/htmlheader.vm @@ -76,10 +76,9 @@ ## --------------------------------------------------------------------------------------------------------------- ## Hook for inserting Link extensions. This will be replaced with the pulled link references. ## --------------------------------------------------------------------------------------------------------------- - - #template("stylesheets.vm") #template("analytics.vm") - #template("javascript.vm") + #template("javascript.vm") ## needs to be before stylesheets.vm because of additional includes of css-Files + #template("stylesheets.vm") #set($bodyTagName = 'body') ## TODO: fix this from css From ffacc2575f1dd2b3358007dd32c69a0500068407 Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Tue, 10 Mar 2026 15:21:04 +0100 Subject: [PATCH 09/56] fix path and js loading order --- src/main/webapp/templates/importinline.vm | 1 + src/main/webapp/templates/javascript.vm | 14 +++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/webapp/templates/importinline.vm b/src/main/webapp/templates/importinline.vm index 7bb253690..1df4ea8ed 100644 --- a/src/main/webapp/templates/importinline.vm +++ b/src/main/webapp/templates/importinline.vm @@ -36,6 +36,7 @@ resetting programming rights for celements2web: $services.celementsweb.resetProg #set($extJsParam = $jsService.createExtJSParam().setAction('file')) #set($extJsParam = $extJsParam.setLazyLoad(true)) $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/xwiki.js'))## + $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki-misc.js'))## #** -#if(($xcontext.action=="inline")||($xcontext.action=="edit") || ($xcontext.action=="admin")) -$!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/validation/livevalidation_prototype.js'))## -$services.css.includeCSSPage(':uicomponents/widgets/validation/livevalidation.css')## -$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/compatibility.js'))## -$!jsService.includeExtJsFile($extJsParam.setJsFile(':celDynJS/DynamicLoader/celLazyLoader.mjs'))## -$!services.javascript.getAllExternalJavaScriptFiles() ## #end ## + diff --git a/src/main/webapp/templates/startpage.vm b/src/main/webapp/templates/startpage.vm index 5c206e9d1..52602a1e7 100644 --- a/src/main/webapp/templates/startpage.vm +++ b/src/main/webapp/templates/startpage.vm @@ -1,3 +1,4 @@ + #template("xwikivars.vm") #template("layoutvars.vm") #template("htmlheader.vm") @@ -14,4 +15,5 @@
#else
## class="content#if($showLeftPanels == "0")hideleft#end#if($showRightPanels == "0")hideright#end"> -#end \ No newline at end of file +#end + From 0fa939ff41413a274e181562bd92d719006ea708 Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Tue, 10 Mar 2026 17:58:11 +0100 Subject: [PATCH 14/56] correct javascript.vm to load in view --- src/main/webapp/templates/htmlheader.vm | 2 - src/main/webapp/templates/javascript.vm | 100 ++++++++++++------------ src/main/webapp/templates/startpage.vm | 2 - 3 files changed, 50 insertions(+), 54 deletions(-) diff --git a/src/main/webapp/templates/htmlheader.vm b/src/main/webapp/templates/htmlheader.vm index 6370ac036..bd221ba38 100644 --- a/src/main/webapp/templates/htmlheader.vm +++ b/src/main/webapp/templates/htmlheader.vm @@ -1,4 +1,3 @@ - ## ------------------------------------------------------------------------------------------------------------------- ## In non-Servlet mode (in Portlet mode for example) we don't display the , and ## elements. @@ -91,4 +90,3 @@ <$bodyTagName id="body" class="wiki-${xcontext.database} space-${escapetool.xml($doc.space.replaceAll(' ', '_'))} ${bodyAction}body #if($showLeftPanels == "0")hideleft#end#if($showRightPanels == "0")hideright#end#if($hidecolumns && ($!hidecolumns == 1))hidelefthideright#end">
- diff --git a/src/main/webapp/templates/javascript.vm b/src/main/webapp/templates/javascript.vm index 509c65ce1..0fd214e69 100644 --- a/src/main/webapp/templates/javascript.vm +++ b/src/main/webapp/templates/javascript.vm @@ -1,4 +1,3 @@ - ## ## CSS files related to JS libraries. ## @@ -47,8 +46,9 @@ $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/xwiki-misc.js'))## #end #end #if(($xcontext.action=="inline")||($xcontext.action=="edit") || ($xcontext.action=="admin")) -$!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/validation/livevalidation_prototype.js'))## -$services.css.includeCSSPage(':uicomponents/widgets/validation/livevalidation.css')## + $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/validation/livevalidation_prototype.js'))## + $services.css.includeCSSPage(':uicomponents/widgets/validation/livevalidation.css')## +#end $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/compatibility.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':celDynJS/DynamicLoader/celLazyLoader.mjs'))## $!services.javascript.getAllExternalJavaScriptFiles() @@ -77,58 +77,58 @@ window.docgeturl = "${doc.getURL('get')}"; // ]]> ## - + function prepareCancelEdit() { + lockEdit(); + } + function cancelCancelEdit() { + cancelCancelEditFlag = false; + } + Event.observe(window, "unload", cancelEdit); + Event.observe(window, "pagehide", cancelEdit); + $j(document).ready(prepareCancelEdit); + // ]]> + #end ## - diff --git a/src/main/webapp/templates/startpage.vm b/src/main/webapp/templates/startpage.vm index 52602a1e7..c351e3944 100644 --- a/src/main/webapp/templates/startpage.vm +++ b/src/main/webapp/templates/startpage.vm @@ -1,4 +1,3 @@ - #template("xwikivars.vm") #template("layoutvars.vm") #template("htmlheader.vm") @@ -16,4 +15,3 @@ #else
## class="content#if($showLeftPanels == "0")hideleft#end#if($showRightPanels == "0")hideright#end"> #end - From d6f1fe0177157ae2db2a0c9019338f867c2afc2b Mon Sep 17 00:00:00 2001 From: Chantal Pichler Date: Tue, 10 Mar 2026 18:31:13 +0100 Subject: [PATCH 15/56] reduce use of $msg in JS-Files --- .../js/xwiki/actionbuttons/actionButtons.js | 25 ++++-- .../js/xwiki/fullscreenedit/fullscreenEdit.js | 10 ++- .../resources/js/xwiki/table/livetable.js | 12 ++- .../js/xwiki/usersandgroups/usersandgroups.js | 45 ++++++----- .../resources/js/xwiki/viewers/attachments.js | 26 +++--- .../resources/js/xwiki/widgets/jumpToPage.js | 27 ++++--- src/main/webapp/resources/js/xwiki/xwiki.js | 14 +++- .../webapp/templates/celMacros/CelMessages.vm | 81 +++++++++++++++++++ 8 files changed, 190 insertions(+), 50 deletions(-) diff --git a/src/main/webapp/resources/js/xwiki/actionbuttons/actionButtons.js b/src/main/webapp/resources/js/xwiki/actionbuttons/actionButtons.js index 81a4b177e..602feea8d 100644 --- a/src/main/webapp/resources/js/xwiki/actionbuttons/actionButtons.js +++ b/src/main/webapp/resources/js/xwiki/actionbuttons/actionButtons.js @@ -2,6 +2,15 @@ // Form buttons: shortcuts, AJAX improvements and form validation // To be completed. +let translations = {}; +if (window.celExecOnceAfterMessagesLoaded) { + window.celExecOnceAfterMessagesLoaded( + celMessages => translations = celMessages.actionButtons + ); +} else { + console.warn('celExecOnceAfterMessagesLoaded not available!'); +} + // Make sure the XWiki 'namespace' exists. if (typeof(XWiki) == 'undefined') { XWiki = new Object(); @@ -33,14 +42,14 @@ XWiki.actionButtons.EditActions = Class.create({ }, addShortcuts : function() { var shortcuts = { - 'action_cancel' : "$msg.get('core.shortcuts.edit.cancel')", - 'action_preview' : "$msg.get('core.shortcuts.edit.preview')", + 'action_cancel' : translations.cancel, + 'action_preview' : translations.preview, // The following 2 are both "Back to edit" in the preview mode, depending on the used editor - 'action_edit' : "$msg.get('core.shortcuts.edit.backtoedit')", - 'action_inline' : "$msg.get('core.shortcuts.edit.backtoedit')", - 'action_save' : "$msg.get('core.shortcuts.edit.saveandview')", - 'action_propupdate' : "$msg.get('core.shortcuts.edit.saveandview')", - 'action_saveandcontinue' : "$msg.get('core.shortcuts.edit.saveandcontinue')" + 'action_edit' : translations.backtoedit, + 'action_inline' : translations.backtoedit, + 'action_save' : translations.saveandview, + 'action_propupdate' : translations.saveAndView, + 'action_saveandcontinue' : translations.saveandcontinue } for (var key in shortcuts) { var targetButtons = $$("input[name=" + key + "]"); @@ -59,7 +68,7 @@ XWiki.actionButtons.EditActions = Class.create({ var input = inputs[i]; var validator = new LiveValidation(input, { validMessage: "" }); validator.add(Validate.Presence, { - failureMessage: "$msg.get('core.editors.validation.mandatoryField')" + failureMessage: translations.mandatoryField }); validator.validate(); this.validators.push(validator); diff --git a/src/main/webapp/resources/js/xwiki/fullscreenedit/fullscreenEdit.js b/src/main/webapp/resources/js/xwiki/fullscreenedit/fullscreenEdit.js index 51771b71e..3a2da3a47 100644 --- a/src/main/webapp/resources/js/xwiki/fullscreenedit/fullscreenEdit.js +++ b/src/main/webapp/resources/js/xwiki/fullscreenedit/fullscreenEdit.js @@ -1,4 +1,12 @@ (function(){ +let translations = {}; +if (window.celExecOnceAfterMessagesLoaded) { + window.celExecOnceAfterMessagesLoaded( + celMessages => translations = celMessages.fullscreenEdit + ); +} else { + console.warn('celExecOnceAfterMessagesLoaded not available!'); +} //function to get a style property of an element ////////////////////////////////////////////// @@ -76,7 +84,7 @@ var showBtn = document.createElement("div"); showBtn.setAttribute("id", "show-dialog-btn"); Event.observe(showBtn, "click", activator, true); - showBtn.setAttribute("title", "$msg.get('fullScreenTooltip')"); + showBtn.setAttribute("title", translations.fullScreenTooltip); var textdiv = document.getElementById("xwikieditcontent"); textdiv.insertBefore(showBtn, textdiv.firstChild); diff --git a/src/main/webapp/resources/js/xwiki/table/livetable.js b/src/main/webapp/resources/js/xwiki/table/livetable.js index 727c61e53..a00dc5785 100644 --- a/src/main/webapp/resources/js/xwiki/table/livetable.js +++ b/src/main/webapp/resources/js/xwiki/table/livetable.js @@ -1,4 +1,12 @@ (function(){ +let translations = {}; +if (window.celExecOnceAfterMessagesLoaded) { + window.celExecOnceAfterMessagesLoaded( + celMessages => translations = celMessages.livetable + ); +} else { + console.warn('celExecOnceAfterMessagesLoaded not available!'); +} /** * XWiki namespace @@ -285,10 +293,10 @@ XWiki.widgets.LiveTable = Class.create({ var f = offset + limit - 1; if (f > this.totalRows) f = this.totalRows; var off = (this.totalRows > 0) ? offset : 0; - var msg = "" + off + " - " + f + " $msg.get('xe.pagination.results.of') " + this.totalRows + ""; + var msg = "" + off + " - " + f + " " + translations.resultsOf + " " + this.totalRows + ""; msg = msg.toLowerCase(); - this.limitsDisplay.innerHTML = "$msg.get('xe.pagination.results') " + msg; + this.limitsDisplay.innerHTML = translations.results + " " + msg; this.clearDisplay(); for (var i = off; i <= f; i++) { diff --git a/src/main/webapp/resources/js/xwiki/usersandgroups/usersandgroups.js b/src/main/webapp/resources/js/xwiki/usersandgroups/usersandgroups.js index 897a50f2f..5b8eacc40 100644 --- a/src/main/webapp/resources/js/xwiki/usersandgroups/usersandgroups.js +++ b/src/main/webapp/resources/js/xwiki/usersandgroups/usersandgroups.js @@ -1,3 +1,12 @@ +let translations = {}; +if (window.celExecOnceAfterMessagesLoaded) { + window.celExecOnceAfterMessagesLoaded( + celMessages => translations = celMessages.usersandgroups + ); +} else { + console.warn('celExecOnceAfterMessagesLoaded not available!'); +} + /* this represent a triple state checkbox */ MSCheckbox = Class.create({ /** @@ -91,9 +100,9 @@ MSCheckbox = Class.create({ // 1. The current user is clearing / denying himself any right. if (self.currentUorG == window.currentUser) { if (nxtst == 2) { - var denymessage = "$msg.get('rightsmanager.denyrightforcurrentuser').replaceAll('"', '\\"')".replace('__right__', self.right); + var denymessage = translations.denyrightforcurrentuser.replaceAll('"', '\\"').replace('__right__', self.right); if (!confirm(denymessage)) { - var clearmessage = "$msg.get('rightsmanager.clearrightforcurrentuserinstead').replaceAll('"', '\\"')".replace('__right__', self.right); + var clearmessage = translations.clearrightforcurrentuserinstead.replaceAll('"', '\\"').replace('__right__', self.right); if (confirm(clearmessage)) { action = "clear"; self.state = 2; @@ -103,7 +112,7 @@ MSCheckbox = Class.create({ } } } else if (nxtst == 0) { - var clearmessage = "$msg.get('rightsmanager.clearrightforcurrentuser').replaceAll('"', '\\"')".replace('__right__', self.right); + var clearmessage = translations.clearrightforcurrentuser.replaceAll('"', '\\"').replace('__right__', self.right); if (!confirm(clearmessage)) { return; } @@ -112,10 +121,10 @@ MSCheckbox = Class.create({ // 2. The current user is clearing / denying any rights for a group he belongs to. else if (self.isUserInGroup || (window.currentUser == "XWiki.XWikiGuest" && self.currentUorG == "XWiki.XWikiAllGroup")) { if (nxtst == 2) { - var denymessage = "$msg.get('rightsmanager.denyrightforgroup').replaceAll('"', '\\"')".replace(/__right__/g, self.right); + var denymessage = translations.denyrightforgroup.replaceAll('"', '\\"').replace(/__right__/g, self.right); denymessage = denymessage.replace('__name__', self.currentUorG); if (!confirm(denymessage)) { - var clearmessage = "$msg.get('rightsmanager.clearrightforgroupinstead').replaceAll('"', '\\"')".replace(/__right__/g, self.right); + var clearmessage = translations.clearrightforgroupinstead.replaceAll('"', '\\"').replace(/__right__/g, self.right); clearmessage = clearmessage.replace('__name__', self.currentUorG); if (confirm(clearmessage)) { action = "clear"; @@ -126,7 +135,7 @@ MSCheckbox = Class.create({ } } } else if (nxtst == 0) { - var clearmessage = "$msg.get('rightsmanager.clearrightforgroup').replaceAll('"', '\\"')".replace(/__right__/g, self.right); + var clearmessage = translations.clearrightforgroup.replaceAll('"', '\\"').replace(/__right__/g, self.right); clearmessage = clearmessage.replace('__name__', self.currentUorG); if (!confirm(clearmessage)) { return; @@ -136,13 +145,13 @@ MSCheckbox = Class.create({ // 3. The current user is is clearing / denying admin right for any user / group. else if (self.right == "admin") { if (nxtst == 2) { - var denymessage = "$msg.get('rightsmanager.denyrightforuorg').replaceAll('"', '\\"')".replace('__right__', self.right); + var denymessage = translations.denyrightforuorg.replaceAll('"', '\\"').replace('__right__', self.right); denymessage = denymessage.replace('__name__', self.currentUorG); if (!confirm(denymessage)) { return; } } else if (nxtst == 0) { - var clearmessage = "$msg.get('rightsmanager.clearrightforuorg').replaceAll('"', '\\"')".replace('__right__', self.right); + var clearmessage = translations.clearrightforuorg.replaceAll('"', '\\"').replace('__right__', self.right); clearmessage = clearmessage.replace('__name__', self.currentUorG); if (!confirm(clearmessage)) { return; @@ -172,13 +181,13 @@ MSCheckbox = Class.create({ //if an error occurred while trying to save a right rule, display an alert // and refresh the page, since probably the user does not have the right to perform // that action - alert("$msg.get('platform.core.rightsManagement.saveFailure')"); + alert(translations.saveFailure); var rURL = unescape(window.location.pathname); window.location.href = rURL; } }, onFailure: function() { - alert("$msg.get('platform.core.rightsManagement.ajaxFailure')"); + alert(translations.ajaxFailure); }, onComplete: function() { delete self.req; @@ -233,7 +242,7 @@ function displayUsers(row, i, table) //edit user var edit = document.createElement('img'); edit.src = '$xwiki.getSkinFile("js/xwiki/usersandgroups/img/edit.png",true)'; - edit.title = "$msg.get('edit')"; + edit.title = translations.edit; Event.observe(edit, 'click', editUserOrGroup(userinlineurl, usersaveurl, docurl)); edit.className = 'icon-manage'; manage.appendChild(edit); @@ -249,7 +258,7 @@ function displayUsers(row, i, table) Event.observe(del, 'click', deleteUserOrGroup(i, table, row.fullname, "user")); del.className = 'icon-manage'; } - del.title = "$msg.get('delete')"; + del.title = translations.delete; manage.appendChild(del); } @@ -295,14 +304,14 @@ function displayGroups(row, i, table) //delete group var del = document.createElement('img'); del.src = '$xwiki.getSkinFile("js/xwiki/usersandgroups/img/clear.png",true)'; - del.title = "$msg.get('delete')"; + del.title = translations.delete; Event.observe(del, 'click', deleteUserOrGroup(i, table, row.fullname, "group")); del.className = 'icon-manage'; //edit user var edit = document.createElement('img'); edit.src = '$xwiki.getSkinFile("js/xwiki/usersandgroups/img/edit.png",true)'; - edit.title = "$msg.get('edit')"; + edit.title = translations.edit; Event.observe(edit, 'click', editUserOrGroup(userinlineurl, usersaveurl, docurl)); edit.className = 'icon-manage'; @@ -348,7 +357,7 @@ function displayMembers(row, i, table) Event.observe(del, 'click', deleteMember(i, table, row.fullname, row.docurl)); del.className = 'icon-manage'; } - del.title = "$msg.get('delete')"; + del.title = translations.delete; membermanage.appendChild(del); tr.appendChild(membermanage); } @@ -418,7 +427,7 @@ function deleteUserOrGroup(i, table, docname, uorg) return function() { var url = "?xpage=deleteuorg&docname=" + docname; if (uorg == "user") { - if (confirm("$msg.get('rightsmanager.confirmdeleteuser').replaceAll('"', '\\"')".replace('__name__', docname))) { + if (confirm(translations.confirmdeleteuser.replaceAll('"', '\\"').replace('__name__', docname))) { new Ajax.Request(url, { method: 'get', onSuccess: function(transport) { @@ -427,7 +436,7 @@ function deleteUserOrGroup(i, table, docname, uorg) }); } } else { - if (confirm("$msg.get('rightsmanager.confirmdeletegroup').replaceAll('"', '\\"')".replace('__name__', docname))) { + if (confirm(translations.confirmdeletegroup.replaceAll('"', '\\"').replace('__name__', docname))) { new Ajax.Request(url, { method: 'get', onSuccess: function(transport) { @@ -444,7 +453,7 @@ function deleteMember(i, table, docname, docurl) { return function() { var url = docurl + "?xpage=deletegroupmember&fullname=" + docname; - if (confirm("$msg.get('rightsmanager.confirmdeletemember').replaceAll('"', '\\"')")) { + if (confirm(translations.confirmdeletemember.replaceAll('"', '\\"'))) { new Ajax.Request(url, { method: 'get', onSuccess: function(transport) { diff --git a/src/main/webapp/resources/js/xwiki/viewers/attachments.js b/src/main/webapp/resources/js/xwiki/viewers/attachments.js index f59ea42ca..56cd062d2 100644 --- a/src/main/webapp/resources/js/xwiki/viewers/attachments.js +++ b/src/main/webapp/resources/js/xwiki/viewers/attachments.js @@ -1,4 +1,12 @@ var XWiki = (function (XWiki) { +let translations = {}; +if (window.celExecOnceAfterMessagesLoaded) { + window.celExecOnceAfterMessagesLoaded( + celMessages => translations = celMessages.attachments + ); +} else { + console.warn('celExecOnceAfterMessagesLoaded not available!'); +} // Start XWiki augmentation. var viewers = XWiki.viewers = XWiki.viewers || {}; /** @@ -55,10 +63,10 @@ viewers.Attachments = Class.create({ }, /* Interaction parameters */ { - confirmationText: "$msg.get('core.viewers.attachments.delete.confirm')", - progressMessageText : "$msg.get('core.viewers.attachments.delete.inProgress')", - successMessageText : "$msg.get('core.viewers.attachments.delete.done')", - failureMessageText : "$msg.get('core.viewers.attachments.delete.failed')" + confirmationText: translations.deleteConfirm, + progressMessageText : translations.deleteInProgress, + successMessageText : translations.deleteDone, + failureMessageText : translations.deleteFailed } ); } @@ -67,10 +75,10 @@ viewers.Attachments = Class.create({ }, updateCount : function() { if ($("Attachmentstab") && $("Attachmentstab").down(".itemCount")) { - $("Attachmentstab").down(".itemCount").update("$msg.get('docextra.extranb', ['__number__'])".replace("__number__", $("Attachmentspane").select(".attachment").size())); + $("Attachmentstab").down(".itemCount").update(translations.extranb.replace("__number__", $("Attachmentspane").select(".attachment").size())); } if ($("attachmentsshortcut") && $("attachmentsshortcut").down(".itemCount")) { - $("attachmentsshortcut").down(".itemCount").update("$msg.get('docextra.extranb', ['__number__'])".replace("__number__", $("Attachmentspane").select(".attachment").size())); + $("attachmentsshortcut").down(".itemCount").update(translations.extranb.replace("__number__", $("Attachmentspane").select(".attachment").size())); } }, /** Enhance the upload form with JS behaviors. */ @@ -94,7 +102,7 @@ viewers.Attachments = Class.create({ addAddButton : function() { var addButton = new Element("input", { type: "button", - value: "$msg.get('core.viewers.attachments.upload.addFileInput')", + value: translations.addFileInput, className: "attachmentActionButton add-file-input" }); this.addDiv = new Element("div"); @@ -137,8 +145,8 @@ viewers.Attachments = Class.create({ createRemoveButton : function() { var removeButton = new Element("input", { type: "button", - value: "$msg.get('core.viewers.attachments.upload.removeFileInput')", - title: "$msg.get('core.viewers.attachments.upload.removeFileInput.title')", + value: translations.removeFileInput, + title: translations.removeFileInputTitle, className: "attachmentActionButton remove-file-input" }); Event.observe(removeButton, "click", this.removeField.bindAsEventListener(this)); diff --git a/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js b/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js index f4744602d..7c3ea43f2 100644 --- a/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js +++ b/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js @@ -1,3 +1,12 @@ +let translations = {}; +if (window.celExecOnceAfterMessagesLoaded) { + window.celExecOnceAfterMessagesLoaded( + celMessages => translations = celMessages.jumpToPage + ); +} else { + console.warn('celExecOnceAfterMessagesLoaded not available!'); +} + // Make sure the XWiki 'namespace' and the ModalPopup class exist. if(typeof(XWiki) == "undefined" || typeof(XWiki.widgets) == "undefined" || typeof(XWiki.widgets.ModalPopup) == "undefined") { if (typeof console != "undefined" && typeof console.warn == "function") { @@ -17,11 +26,11 @@ XWiki.widgets.JumpToPage = Class.create(XWiki.widgets.ModalPopup, { this.input = new Element("input", { "type" : "text", "id" : "jmp_target", - "title" : "$msg.get('core.viewers.jump.dialog.input.tooltip')" + "title" : translations.inputTooltip }); content.appendChild(this.input); - this.viewButton = this.createButton("button", "$msg.get('core.viewers.jump.dialog.actions.view')", "$msg.get('core.viewers.jump.dialog.actions.view.tooltip')", "jmp_view"); - this.editButton = this.createButton("button", "$msg.get('core.viewers.jump.dialog.actions.edit')", "$msg.get('core.viewers.jump.dialog.actions.edit.tooltip')", "jmp_edit"); + this.viewButton = this.createButton("button", translations.viewAction, translations.viewTooltip, "jmp_view"); + this.editButton = this.createButton("button", translations.editAction, translations.editTooltip, "jmp_edit"); var buttonContainer = new Element("div", {"class" : "buttons"}); buttonContainer.appendChild(this.viewButton); buttonContainer.appendChild(this.editButton); @@ -29,12 +38,12 @@ XWiki.widgets.JumpToPage = Class.create(XWiki.widgets.ModalPopup, { $super( content, { - "show" : { method : this.showDialog, keys : [$msg.get('core.viewers.jump.shortcuts')] }, - "view" : { method : this.openDocument, keys : [$msg.get('core.viewers.jump.dialog.actions.view.shortcuts')] }, - "edit" : { method : this.openDocument, keys : [$msg.get('core.viewers.jump.dialog.actions.edit.shortcuts')] } + "show" : { method : this.showDialog, keys : [translations.shortcuts] }, + "view" : { method : this.openDocument, keys : [translations.viewShortcuts] }, + "edit" : { method : this.openDocument, keys : [translations.editShortcuts] } }, { - title : "$msg.get('core.viewers.jump.dialog.content')", + title : translations.dialogTitle, verticalPosition : "top" } ); @@ -56,7 +65,7 @@ XWiki.widgets.JumpToPage = Class.create(XWiki.widgets.ModalPopup, { script: "${request.contextPath}/rest/wikis/${context.database}/search?scope=name&number=10&media=json&", // Prefixed with & since the current (as of 1.7) Suggest code does not automatically append it. varname: "q", - noresults: "$msg.get('core.viewers.jump.suggest.noResults')", + noresults: translations.noResults, icon: "${xwiki.getSkinFile('icons/silk/page_white_text.gif')}", json: true, resultsParameter : "searchResults", @@ -93,7 +102,7 @@ XWiki.widgets.JumpToPage = Class.create(XWiki.widgets.ModalPopup, { addQuickLinksEntry : function() { $$(".panel.QuickLinks .xwikipanelcontents").each(function(item) { var jumpToPageActivator = new Element('span', {'class': "jmp-activator"}); - jumpToPageActivator.update("$msg.get('core.viewers.jump.quickLinksText')"); + jumpToPageActivator.update(translations.quickLinksText); Event.observe(jumpToPageActivator, "click", function(event) { this.showDialog(event); }.bindAsEventListener(this)); diff --git a/src/main/webapp/resources/js/xwiki/xwiki.js b/src/main/webapp/resources/js/xwiki/xwiki.js index 6b078ee4d..d35558d7b 100644 --- a/src/main/webapp/resources/js/xwiki/xwiki.js +++ b/src/main/webapp/resources/js/xwiki/xwiki.js @@ -1,4 +1,12 @@ var XWiki = (function (XWiki) { +let translations = {}; +if (window.celExecOnceAfterMessagesLoaded) { + window.celExecOnceAfterMessagesLoaded( + celMessages => translations = celMessages.xwiki + ); +} else { + console.warn('celExecOnceAfterMessagesLoaded not available!'); +} /** * XWiki namespace. * TODO: move everything in it. @@ -321,7 +329,7 @@ var XWiki = (function (XWiki) { $(content).select(".xwikirenderingerror").each(function (error) { if (error.next().innerHTML !== "" && error.next().hasClassName("xwikirenderingerrordescription")) { error.style.cursor = "pointer"; - error.title = "$msg.get('platform.core.rendering.error.readTechnicalInformation')"; + error.title = translations.readTechnicalInformation; Event.observe(error, "click", function (event) { event.element().next().toggleClassName("hidden"); }); @@ -395,7 +403,7 @@ var XWiki = (function (XWiki) { editlink.href = window.docediturl + "?section=" + sectioncount; editlink.style.textDecoration = "none"; - editlink.innerHTML = "$msg.get('edit')"; + editlink.innerHTML = translations.edit; editspan.className = "edit_section"; editspan.appendChild(editlink); @@ -447,7 +455,7 @@ var XWiki = (function (XWiki) { } }, onFailure: function () { - new XWiki.widgets.Notification("$msg.get('core.create.ajax.error')", 'error', { inactive: true }).show(); + new XWiki.widgets.Notification(translations.createAjaxError, 'error', { inactive: true }).show(); } }); event.stop(); diff --git a/src/main/webapp/templates/celMacros/CelMessages.vm b/src/main/webapp/templates/celMacros/CelMessages.vm index f599d86cc..0c26ad37b 100644 --- a/src/main/webapp/templates/celMacros/CelMessages.vm +++ b/src/main/webapp/templates/celMacros/CelMessages.vm @@ -102,3 +102,84 @@ $jsonBuilder.openProperty('celmenu') $jsonBuilder.openDictionary() $jsonBuilder.addStringProperty('supportLinkURL', "$!services.celementsweb.getSupportLinkURL()") $jsonBuilder.closeDictionary() + +## fullscreenEdit.js +$jsonBuilder.openProperty('fullscreenEdit') +$jsonBuilder.openDictionary() +$jsonBuilder.addStringProperty('fullScreenTooltip', "$!adminMsg.get('fullScreenTooltip')") +$jsonBuilder.closeDictionary() + +## livetable.js +$jsonBuilder.openProperty('livetable') +$jsonBuilder.openDictionary() +$jsonBuilder.addStringProperty('resultsOf', "$!adminMsg.get('xe.pagination.results.of')") +$jsonBuilder.addStringProperty('results', "$!adminMsg.get('xe.pagination.results')") +$jsonBuilder.closeDictionary() + +## xwiki.js +$jsonBuilder.openProperty('xwiki') +$jsonBuilder.openDictionary() +$jsonBuilder.addStringProperty('readTechnicalInformation', "$!adminMsg.get('platform.core.rendering.error.readTechnicalInformation')") +$jsonBuilder.addStringProperty('edit', "$!adminMsg.get('edit')") +$jsonBuilder.addStringProperty('createAjaxError', "$!adminMsg.get('core.create.ajax.error')") +$jsonBuilder.closeDictionary() + +## actionButtons.js +$jsonBuilder.openProperty('actionButtons') +$jsonBuilder.openDictionary() +$jsonBuilder.addStringProperty('cancel', "$!adminMsg.get('core.shortcuts.edit.cancel')") +$jsonBuilder.addStringProperty('preview', "$!adminMsg.get('core.shortcuts.edit.preview')") +$jsonBuilder.addStringProperty('backtoedit', "$!adminMsg.get('core.shortcuts.edit.backtoedit')") +$jsonBuilder.addStringProperty('saveandview', "$!adminMsg.get('core.shortcuts.edit.saveandview')") +$jsonBuilder.addStringProperty('saveandcontinue', "$!adminMsg.get('core.shortcuts.edit.saveandcontinue')") +$jsonBuilder.addStringProperty('mandatoryField', "$!adminMsg.get('core.editors.validation.mandatoryField')") +$jsonBuilder.closeDictionary() + +## attachments.js +$jsonBuilder.openProperty('attachments') +$jsonBuilder.openDictionary() +$jsonBuilder.addStringProperty('deleteConfirm', "$!adminMsg.get('core.viewers.attachments.delete.confirm')") +$jsonBuilder.addStringProperty('deleteInProgress', "$!adminMsg.get('core.viewers.attachments.delete.inProgress')") +$jsonBuilder.addStringProperty('deleteDone', "$!adminMsg.get('core.viewers.attachments.delete.done')") +$jsonBuilder.addStringProperty('deleteFailed', "$!adminMsg.get('core.viewers.attachments.delete.failed')") +$jsonBuilder.addStringProperty('extranb', "$!adminMsg.get('docextra.extranb')") +$jsonBuilder.addStringProperty('addFileInput', "$!adminMsg.get('core.viewers.attachments.upload.addFileInput')") +$jsonBuilder.addStringProperty('removeFileInput', "$!adminMsg.get('core.viewers.attachments.upload.removeFileInput')") +$jsonBuilder.addStringProperty('removeFileInputTitle', "$!adminMsg.get('core.viewers.attachments.upload.removeFileInput.title')") +$jsonBuilder.closeDictionary() + +## usersandgroups.js +$jsonBuilder.openProperty('usersandgroups') +$jsonBuilder.openDictionary() +$jsonBuilder.addStringProperty('denyrightforcurrentuser', "$!adminMsg.get('rightsmanager.denyrightforcurrentuser')") +$jsonBuilder.addStringProperty('clearrightforcurrentuserinstead', "$!adminMsg.get('rightsmanager.clearrightforcurrentuserinstead')") +$jsonBuilder.addStringProperty('clearrightforcurrentuser', "$!adminMsg.get('rightsmanager.clearrightforcurrentuser')") +$jsonBuilder.addStringProperty('denyrightforgroup', "$!adminMsg.get('rightsmanager.denyrightforgroup')") +$jsonBuilder.addStringProperty('clearrightforgroupinstead', "$!adminMsg.get('rightsmanager.clearrightforgroupinstead')") +$jsonBuilder.addStringProperty('clearrightforgroup', "$!adminMsg.get('rightsmanager.clearrightforgroup')") +$jsonBuilder.addStringProperty('denyrightforuorg', "$!adminMsg.get('rightsmanager.denyrightforuorg')") +$jsonBuilder.addStringProperty('clearrightforuorg', "$!adminMsg.get('rightsmanager.clearrightforuorg')") +$jsonBuilder.addStringProperty('saveFailure', "$!adminMsg.get('platform.core.rightsManagement.saveFailure')") +$jsonBuilder.addStringProperty('ajaxFailure', "$!adminMsg.get('platform.core.rightsManagement.ajaxFailure')") +$jsonBuilder.addStringProperty('edit', "$!adminMsg.get('edit')") +$jsonBuilder.addStringProperty('delete', "$!adminMsg.get('delete')") +$jsonBuilder.addStringProperty('confirmdeleteuser', "$!adminMsg.get('rightsmanager.confirmdeleteuser')") +$jsonBuilder.addStringProperty('confirmdeletegroup', "$!adminMsg.get('rightsmanager.confirmdeletegroup')") +$jsonBuilder.addStringProperty('confirmdeletemember', "$!adminMsg.get('rightsmanager.confirmdeletemember')") +$jsonBuilder.closeDictionary() + +## jumpToPage.js +$jsonBuilder.openProperty('jumpToPage') +$jsonBuilder.openDictionary() +$jsonBuilder.addStringProperty('inputTooltip', "$!adminMsg.get('core.viewers.jump.dialog.input.tooltip')") +$jsonBuilder.addStringProperty('viewAction', "$!adminMsg.get('core.viewers.jump.dialog.actions.view')") +$jsonBuilder.addStringProperty('viewTooltip', "$!adminMsg.get('core.viewers.jump.dialog.actions.view.tooltip')") +$jsonBuilder.addStringProperty('editAction', "$!adminMsg.get('core.viewers.jump.dialog.actions.edit')") +$jsonBuilder.addStringProperty('editTooltip', "$!adminMsg.get('core.viewers.jump.dialog.actions.edit.tooltip')") +$jsonBuilder.addStringProperty('shortcuts', "$!adminMsg.get('core.viewers.jump.shortcuts')") +$jsonBuilder.addStringProperty('viewShortcuts', "$!adminMsg.get('core.viewers.jump.dialog.actions.view.shortcuts')") +$jsonBuilder.addStringProperty('editShortcuts', "$!adminMsg.get('core.viewers.jump.dialog.actions.edit.shortcuts')") +$jsonBuilder.addStringProperty('dialogContent', "$!adminMsg.get('core.viewers.jump.dialog.content')") +$jsonBuilder.addStringProperty('noResults', "$!adminMsg.get('core.viewers.jump.suggest.noResults')") +$jsonBuilder.addStringProperty('quickLinksText', "$!adminMsg.get('core.viewers.jump.quickLinksText')") +$jsonBuilder.closeDictionary() From 8f88dd0a3abfc8f51d69a8db2445976003c26efc Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Thu, 12 Mar 2026 01:42:32 +0100 Subject: [PATCH 16/56] add celements menubar --- src/main/webapp/templates/htmlheader.vm | 6 ++++++ src/main/webapp/templates/javascript.vm | 3 +++ 2 files changed, 9 insertions(+) diff --git a/src/main/webapp/templates/htmlheader.vm b/src/main/webapp/templates/htmlheader.vm index bd221ba38..e6ac1dc05 100644 --- a/src/main/webapp/templates/htmlheader.vm +++ b/src/main/webapp/templates/htmlheader.vm @@ -8,6 +8,9 @@ #end +#set($cel_isEditMode = (("$context.action" == 'edit') || ("$context.action" == 'inline'))) +#set($cel_loadAdminMenuBar = (!$cel_isEditMode && ("$!request.picker" != '1'))) +#set($cel_loadAdminMenuBar = $cel_loadAdminMenuBar && ($isContentEditor || $isAdmin || ($services.celMenu.getMenuHeaders().size() > 0))) ## --------------------------------------------------------------------------------------------------------------- @@ -88,5 +91,8 @@ #end ## These elements will be closed in the htmlfooter.vm file <$bodyTagName id="body" class="wiki-${xcontext.database} space-${escapetool.xml($doc.space.replaceAll(' ', '_'))} ${bodyAction}body #if($showLeftPanels == "0")hideleft#end#if($showRightPanels == "0")hideright#end#if($hidecolumns && ($!hidecolumns == 1))hidelefthideright#end"> +#if($cel_loadAdminMenuBar) +#parse('celMacros/MenuBar.vm') +#end
diff --git a/src/main/webapp/templates/javascript.vm b/src/main/webapp/templates/javascript.vm index 0fd214e69..e323b85cc 100644 --- a/src/main/webapp/templates/javascript.vm +++ b/src/main/webapp/templates/javascript.vm @@ -26,6 +26,9 @@ $services.css.includeCSSPage(':uicomponents/widgets/notification.css')## $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/list/xlist.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/suggest/suggest.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/xwiki-misc.js'))## +#if($hasedit || $isContentEditor || $isAdmin || ($services.celMenu.getMenuHeaders().size() > 0)) + $!jsService.includeExtJsFile($extJsParam.setJsFile(':celJS/adminUi/menubar.js')) +#end #if($xwiki.exists('XWiki.SearchSuggestConfig')) ## Hook to request the search suggest script if search suggest configuration is present. ## We can't just have it as a always-use SSX yet since we compute a hash to be sure to refresh From c2888ad3cc5573e72156357aa3e9b0612300b37d Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Thu, 12 Mar 2026 01:54:10 +0100 Subject: [PATCH 17/56] add celements2.css and admininterface.js --- src/main/webapp/templates/javascript.vm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/webapp/templates/javascript.vm b/src/main/webapp/templates/javascript.vm index e323b85cc..02dba16b5 100644 --- a/src/main/webapp/templates/javascript.vm +++ b/src/main/webapp/templates/javascript.vm @@ -27,6 +27,10 @@ $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/list/x $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/suggest/suggest.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/xwiki-misc.js'))## #if($hasedit || $isContentEditor || $isAdmin || ($services.celMenu.getMenuHeaders().size() > 0)) + $services.css.includeCSSPage(':celRes/celements2.css')## + $!jsService.includeExtJsFile($extJsParam.setJsFile(':celJS/moofx/moo.fx.js')) + $!jsService.includeExtJsFile($extJsParam.setJsFile(':celJS/moofx/moo.fx.utils.js')) + $!jsService.includeExtJsFile($extJsParam.setJsFile(':celJS/adminUi/admininterface.js')) $!jsService.includeExtJsFile($extJsParam.setJsFile(':celJS/adminUi/menubar.js')) #end #if($xwiki.exists('XWiki.SearchSuggestConfig')) From 807fa0da31a275e73a5c83adc4cce7e3d944448f Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Thu, 12 Mar 2026 02:07:01 +0100 Subject: [PATCH 18/56] add body css class and improve screenlayout.css --- .../webapp/skins/albatross/screenlayout.css | 621 +++++++++++------- src/main/webapp/templates/htmlheader.vm | 6 +- 2 files changed, 397 insertions(+), 230 deletions(-) diff --git a/src/main/webapp/skins/albatross/screenlayout.css b/src/main/webapp/skins/albatross/screenlayout.css index 2f1c91c41..b71415672 100644 --- a/src/main/webapp/skins/albatross/screenlayout.css +++ b/src/main/webapp/skins/albatross/screenlayout.css @@ -7,46 +7,61 @@ for @media screen displays **/ -body#body{ +body#body { width: 100%; padding: 0; - margin: 0 ; /* padding et margin nul pour emulation min width*/ + margin: 0; + /* padding et margin nul pour emulation min width*/ min-width: 760px; } -#xwikimaincontainer{ +#xwikimaincontainer { margin: 0px 40px; text-align: center; margin-bottom: 40px; } -html > body .minwidth, html > body .minwidthb, html > body .minwidthc{ +html>body .minwidth, +html>body .minwidthb, +html>body .minwidthc { display: none; } -.minwidth, .minwidthb, .minwidthc{ + +.minwidth, +.minwidthb, +.minwidthc { width: 720px; height: 0px; } -* html .minwidth, * html .minwidthb, * html .minwidthc{ + +* html .minwidth, +* html .minwidthb, +* html .minwidthc { height: 1px !important; overflow: hidden; } -.minwidthb{ + +.minwidthb { width: 520px; } -.minwidthc{ + +.minwidthc { width: 438px; } -.layoutsection{ + +.layoutsection { clear: both; } -#xwikimaincontainerinner{ + +#xwikimaincontainerinner { text-align: left; } -#contentcontainer{ + +#contentcontainer { z-index: 1; } -#xwikieditor{ + +#xwikieditor { border-right: 310px solid; z-index: 1; } @@ -63,13 +78,14 @@ Global header --------------------------------------- */ -#headerglobal{ +#headerglobal { display: block; height: 8em; min-height: 100px; - border-right:200px solid ; + border-right: 200px solid; z-index: 1; } + #globallinks { position: relative; float: left; @@ -79,10 +95,11 @@ Global header margin-right: -200px; } -.editbody #headerglobal{ - border-right:310px solid ; +.editbody #headerglobal { + border-right: 310px solid; } -.editbody #globallinks{ + +.editbody #globallinks { width: 310px; margin-right: -310px; } @@ -93,21 +110,24 @@ Global header font-size: 115%; line-height: 1em; } + #globalmenu .glink { display: block; text-decoration: none; font-size: 0.8em; font-weight: bold; } -#globalmenu #headerlanguages a{ + +#globalmenu #headerlanguages a { text-transform: capitalize; } + #globalmenu span { display: none; } -#company{ +#company { height: 8em; float: left; width: 100%; @@ -123,7 +143,8 @@ Global header } #globaldoctitle { - display: none; /*pour éviter pb dans IE -- a regler*/ + display: none; + /*pour éviter pb dans IE -- a regler*/ } @@ -152,17 +173,21 @@ Global header Space header, footer --------------------------------------- */ -#headerspace, #footerglobal { +#headerspace, +#footerglobal { height: 1.5em; } + #footerglobal { padding: 1em 0px; text-align: center; } -#headerspace hr, #footerglobal hr{ +#headerspace hr, +#footerglobal hr { display: none; } + #breadcrumbs { padding-left: 40px; display: inline-block; @@ -175,9 +200,12 @@ Space header, footer vertical-align: middle; float: left; } -#headerspace:target #breadcrumbs, #headerspace:target .edit-meta-tools { + +#headerspace:target #breadcrumbs, +#headerspace:target .edit-meta-tools { display: none; } + .edit-meta-tools a { display: block; width: 16px; @@ -187,9 +215,11 @@ Space header, footer background: transparent none left top no-repeat; margin-left: 4px; } + .edit-meta-tools a.edit-parent { background-image: url(/skin/resources/icons/xwiki/parent_edit.gif); } + .edit-meta-tools a.hide-edit-parent { background-image: url(/skin/resources/icons/silk/chart_organisation.gif); } @@ -201,38 +231,47 @@ Space header, footer font-size: 90%; vertical-align: baseline; } + #headerspace #parentinput * { vertical-align: baseline; } + /* Don't combine the following two rules, otherwise IE will fail to recognize either of them */ #headerspace:target #parentinput { display: inline-block; } + #headerspace #parentinput.active { display: inline-block; } -#footerglobal, #headerspace { - clear:both; +#footerglobal, +#headerspace { + clear: both; } + #xwikilicence { float: right; clear: right; margin-right: 5px; } + #xwikidocinfo { width: 100%; } + #celementsplatformversion { float: left; margin-left: 5px; } + /* --------------------------------------- Content --------------------------------------- */ -#contentcontainerinner, #xwikieditorinner { +#contentcontainerinner, +#xwikieditorinner { width: 100%; background-color: #FFF; } @@ -241,47 +280,56 @@ Content float: right; padding: 0px; } + * html #contentcolumn { width: auto; } + .main { padding: 20px 40px 20px 40px; } -.leftsidecolumns{ + +.leftsidecolumns { float: left; width: 100%; } -.content{ + +.content { border-right: 200px solid; border-left: 200px solid; } -.contenthideleft{ - border-right: 200px solid ; - border-left: 0px solid ; + +.contenthideleft { + border-right: 200px solid; + border-left: 0px solid; } -.contenthideright{ - border-right: 0px solid ; + +.contenthideright { + border-right: 0px solid; border-left: 200px solid; } -#contentcontainer.contenthidelefthideright{ - border-right: 0px solid ; - border-left: 0px solid ; + +#contentcontainer.contenthidelefthideright { + border-right: 0px solid; + border-left: 0px solid; } -#editcolumn{ +#editcolumn { width: 100%; float: left; overflow: hidden; padding-bottom: 20px; } -#actionmenu{} +#actionmenu {} + #xwikieditcontent textarea#content { width: 100%; } -.layoutsubsection{} -.layoutsubsection.about{ +.layoutsubsection {} + +.layoutsubsection.about { border: none; text-align: right; font-style: italic; @@ -290,10 +338,10 @@ Content } .about { - float:right; - text-align:right; - width:230px; - overflow:hidden; + float: right; + text-align: right; + width: 230px; + overflow: hidden; height: 30px; line-height: 15px; } @@ -303,13 +351,14 @@ Content Zone for Comments, attachments, History... --------------------------------------- */ -#xwikidata{ +#xwikidata { padding: 0px; border: none; } -.xwikiintratitle{ -} -.xwikiintracontent{ + +.xwikiintratitle {} + +.xwikiintracontent { margin: 0px; } @@ -318,7 +367,7 @@ Zone for Comments, attachments, History... "Message Boxes" --------------------------------------------- */ -fieldset.xwikimessage{ +fieldset.xwikimessage { display: block; float: none; width: 480px; @@ -327,7 +376,8 @@ fieldset.xwikimessage{ border-top: 8px solid #BBB; padding: 0px 8px 16px; } -html > body fieldset.xwikimessage{ + +html>body fieldset.xwikimessage { padding-top: 8px; } @@ -337,54 +387,65 @@ fieldset.xwikimessage legend { padding: 2px 8px; margin: 0px; } -fieldset.xwikimessage .xwikimessage{ + +fieldset.xwikimessage .xwikimessage { text-align: center; font-weight: bold; font-size: 110%; } + fieldset.xwikimessage .buttons { text-align: center; } + fieldset.xwikimessage .buttons a { text-decoration: none; margin: 8px; } -.button{ +.button { font-family: Helvetica, sans-serif; font-weight: bold; text-align: center; } -.topbuttons{ + +.topbuttons { margin-bottom: 5px; } -.bottombuttons{ + +.bottombuttons { margin-top: 5px; } + /* ---------------------------------------------- Comments ---------------------------------------------- */ -.xwikicomment { -} +.xwikicomment {} -#xwikidata #commentscontent{ +#xwikidata #commentscontent { background: #E5F0FE url("icons/black-bg-comments-left.png") left top no-repeat; } -#comments, #attachments { + +#comments, +#attachments { padding: 0px 20px; } -#xwikidata .xwikititlewrapper{ + +#xwikidata .xwikititlewrapper { cursor: pointer; } -#xwikidata #commentscontent .xwikititlewrapper{ + +#xwikidata #commentscontent .xwikititlewrapper { background: transparent url("icons/black-bg-comments-right.png") right top no-repeat; } -#xwikidata #attw{ + +#xwikidata #attw { background: transparent url("icons/black-bg-attach-right.png") right bottom no-repeat; } -.xwikiintratitle{ + +.xwikiintratitle { background: transparent url("icons/black-content-more.png") right center no-repeat; font-size: 160%; font-weight: 400; @@ -392,115 +453,140 @@ Comments margin: 0px 24px; padding: 16px 0px 16px; } -.exp .xwikiintratitle{ + +.exp .xwikiintratitle { background: transparent url("icons/black-content-less.png") right center no-repeat; } + #xwikidata #attachmentscontent { background: url("icons/black-bg-attach-left.png") left bottom no-repeat; } -#attachmentscontent table{ + +#attachmentscontent table { border: none; } -.mime{ + +.mime { text-align: center; } -.xwikicomment{ + +.xwikicomment { padding: 10px 24px; position: relative; overflow: hidden; } -.commentspacer{ + +.commentspacer { display: none; } -#comments .odd{ + +#comments .odd { background-color: #FFF; } -#comments .even{ + +#comments .even { background-color: #E5F0FE; } -.commentavatar{ +.commentavatar { left: 0px; top: 0px; width: 54px; } -.commentavatar img{ + +.commentavatar img { width: 3.5em; display: block; margin: auto; } -.commentheader{ + +.commentheader { padding: 6px 0px; } -.commentauthor{ + +.commentauthor { font-size: 130%; font-weight: 900; } -.commentauthor a{ + +.commentauthor a { text-decoration: none; color: #000 !important; } -.commentcontent{ -} +.commentcontent {} -.xwikibuttonlink a{ +.xwikibuttonlink a { background-color: #BBB; padding: 2px 4px; text-decoration: none; font-weight: bold; } -table.xwikidatatable{ + +table.xwikidatatable { margin: 8px auto; /* width: 100%; */ } -table.xwikidatatable, table.xwikidatatable th{ + +table.xwikidatatable, +table.xwikidatatable th { border: 1px solid #DDD; } -table.xwikidatatable td{ + +table.xwikidatatable td { padding: 2px 8px; } -.xwikiintracontent legend{ +.xwikiintracontent legend { border: 1px solid #ddd; padding: 2px 4px; } -.xwikiintracontent fieldset{ + +.xwikiintracontent fieldset { border-color: #ddd; border-style: solid; padding: 8px 8px; } -.xwikiintracontent legend{ + +.xwikiintracontent legend { font-size: 110%; font-weight: bold; cursor: pointer; margin-bottom: 8px; } -html > body .xwikiintracontent legend{ + +html>body .xwikiintracontent legend { margin-bottom: 0px; } -.xwikiintracontent fieldset.collapsed{ + +.xwikiintracontent fieldset.collapsed { border: none; } -.xwikiintracontent fieldset.collapsed legend{ + +.xwikiintracontent fieldset.collapsed legend { margin-left: 2px; } -.xwikiintracontent fieldset.collapsed div{ + +.xwikiintracontent fieldset.collapsed div { display: none; } -.xwikiintracontent fieldset.expanded .expands{ + +.xwikiintracontent fieldset.expanded .expands { display: none; } -.commentsno, .attachmentsno{ +.commentsno, +.attachmentsno { font-size: 50%; background: transparent url("icons/black-comment2.png") center no-repeat; padding: 11px 24px 13px; font-weight: 900; } -.attachmentsno{ + +.attachmentsno { background: transparent url("icons/black-doc2.png") center no-repeat; } + /* --------------------------------------- Menu @@ -520,58 +606,66 @@ Menu overflow: visible; } -html > body #actionmenu{ +html>body #actionmenu { position: fixed; top: 0; left: 0; width: 100%; } -#actionmenu a{ +html>body.celementsmenubarvisible #actionmenu { + top: 28px; +} + +#actionmenu a { text-decoration: none; } -.rightmenu{ - position: absolute; - right: 0px; - margin-right: 40px; + +.rightmenu { + position: absolute; + right: 0px; + margin-right: 40px; } -.rightmenu a{ + +.rightmenu a { float: left; width: 200px; text-align: center; - border:1px solid; - border-width:0px 1px; + border: 1px solid; + border-width: 0px 1px; margin-right: -1px; - font-size:1em; - text-decoration:none; - height:2em; - line-height:1.9em; + font-size: 1em; + text-decoration: none; + height: 2em; + line-height: 1.9em; } -.leftmenu{ +.leftmenu { position: absolute; left: 42px; } .leftmenu2 { - text-align: left; + text-align: left; } -.topmenuentry{ +.topmenuentry { float: left; width: 7em; height: 2em; text-align: center; - border:1px solid ; - border-width:0px 1px; + border: 1px solid; + border-width: 0px 1px; margin-right: -1px; } -.topmenuentry strong{ + +.topmenuentry strong { font-size: 90%; } -.submenu{ + +.submenu { display: block; width: 12em; text-align: left; @@ -581,26 +675,29 @@ html > body #actionmenu{ } -.topmenuentry a, .topmenuentry a:link, .topmenuentry a:visited, .topmenuentry a:active{ -display:block; -font-size:1em; -text-decoration:none; -width:7em; -height:2em; -line-height:1.9em; +.topmenuentry a, +.topmenuentry a:link, +.topmenuentry a:visited, +.topmenuentry a:active { + display: block; + font-size: 1em; + text-decoration: none; + width: 7em; + height: 2em; + line-height: 1.9em; } -.rightmenu a{ -height:2em; -line-height:1.9em; -font-size:1em; -text-decoration:none; +.rightmenu a { + height: 2em; + line-height: 1.9em; + font-size: 1em; + text-decoration: none; } -.submenu .submenuitem{ +.submenu .submenuitem { display: block; padding: 2px; - border-bottom: 1px dashed ; + border-bottom: 1px dashed; margin-bottom: -1px; } @@ -608,26 +705,30 @@ text-decoration:none; display: block; font-size: 1px; line-height: 1px; - border-top: 1px solid ; + border-top: 1px solid; } -.submenu.hidden{ +.submenu.hidden { display: none; } -.submenuitem a, .submenuitem a:link, .submenuitem a:visited, .submenuitem a:active { -display:block; -width: auto; -font-size:0.8em; -font-weight: bold; -text-decoration:none; -height:auto; -padding:1px 3px; -line-height:1.5em; + +.submenuitem a, +.submenuitem a:link, +.submenuitem a:visited, +.submenuitem a:active { + display: block; + width: auto; + font-size: 0.8em; + font-weight: bold; + text-decoration: none; + height: auto; + padding: 1px 3px; + line-height: 1.5em; } .menuarrow { - display:none; + display: none; } /* @@ -635,7 +736,8 @@ line-height:1.5em; Editors --------------------------------------- */ -#xwikieditorstitles, #xwikiviewerstitles{ +#xwikieditorstitles, +#xwikiviewerstitles { display: none; } @@ -644,11 +746,12 @@ Editors Tabs --------------------------------------- */ -ul.xwikitabbar{ +ul.xwikitabbar { padding: 4px 0px; margin: 0px; } -.xwikitabbar li{ + +.xwikitabbar li { display: inline; padding: 5px 0px; list-style-type: none; @@ -657,30 +760,34 @@ ul.xwikitabbar{ margin-right: 2px; margin-top: 2px; } -html > body .xwikitabbar li{ + +html>body .xwikitabbar li { padding: 5px 0px; } -.xwikitabbar li a{ + +.xwikitabbar li a { padding: 5px 15px; font-weight: bold; text-decoration: none; } -.xwikitabbar li a:hover{ + +.xwikitabbar li a:hover { text-decoration: none; } -.xwikitabbar li.active{ +.xwikitabbar li.active { border: 1px solid; border-bottom: 3px solid; } -.xwikitabbar li.active a:hover{ +.xwikitabbar li.active a:hover { cursor: default; } + /* -- */ -#xwikicontentedit{ +#xwikicontentedit { border: 1px solid; } @@ -695,47 +802,56 @@ Panels margin: 0px; padding: 0px 0px 30px; } -.globalsearch input{ + +.globalsearch input { font-size: 0.7em; border: 1px solid; display: inline !important; } -.globalsearch input.button{ + +.globalsearch input.button { vertical-align: middle; font-size: 1em; border: 0px; padding: 0px; } -#rightPanels, #leftPanels { +#rightPanels, +#leftPanels { position: relative; float: left; width: 200px; padding-top: 0px; } -#rightPanels{ + +#rightPanels { margin-right: -200px; } + #leftPanels { margin-left: -200px; } -.panels{ -} -html > body .panels{ +.panels {} + +html>body .panels { margin-top: 0px; } + .panels.left { float: left; clear: none; margin-left: 0px; } + .panels.right { float: right; clear: right; margin-right: 0px; } -.panel, .fakepanel{ + +.panel, +.fakepanel { color: #DDD; width: 200px; display: block; @@ -743,62 +859,75 @@ html > body .panels{ padding: 0px; border: 0px solid; } -.placeholder{ + +.placeholder { width: 200px; } -html > body #dragbox { + +html>body #dragbox { width: 198px !important; } -#xwikinavcontainer{ + +#xwikinavcontainer { margin-bottom: 20px; } -.fakepanel{ + +.fakepanel { display: none; height: 320px; } -#editPanels.panels{ +#editPanels.panels { width: 310px; float: left; position: relative; margin-right: -310px; } -#editPanels .panel{ + +#editPanels .panel { width: 310px; } -.collapsed .xwikipanelcontents{ + +.collapsed .xwikipanelcontents { display: none; } -span.panelitem{ + +span.panelitem { display: block; } -span.pitemseparator{ + +span.pitemseparator { display: none; } -.panelcontainer{ + +.panelcontainer { height: 200px; overflow: hidden; border: 1px inset #444; padding: 3px; } -.panelitemc{ + +.panelitemc { height: 256px; margin: 0px 4px; width: 210px; float: left; } -.panelitemc .label, .panelitemc .xwikibuttonlink{ + +.panelitemc .label, +.panelitemc .xwikibuttonlink { text-align: center; } + /* ---------------------------------- Scriptaculous Acordeon ---------------------------------- */ #xwikisyntaxhelp { - margin-top:6px; - border-top-width:1px; - border-top-style:solid; + margin-top: 6px; + border-top-width: 1px; + border-top-style: solid; border: none; } @@ -807,29 +936,37 @@ Scriptaculous Acordeon } /* Note that h6 styling is provided in order to ensure backward compatibility after XSALBATROSS-71 */ -.accordionTabTitleBar h1, .accordionTabTitleBar h6 { +.accordionTabTitleBar h1, +.accordionTabTitleBar h6 { margin: 0px; padding: 0px 4px; } -#editPanels .accordionTabContentBox{ +#editPanels .accordionTabContentBox { border: none; overflow: auto !important; } -#editPanels .accordionTabContentBox table{ +#editPanels .accordionTabContentBox table { border: none; } -.accordionTabContentBox table th{ + +.accordionTabContentBox table th { border-bottom: 1px solid #DDD; text-align: center; } -#xwikihelptitlesContent h1, #xwikihelptitlesContent h2, #xwikihelptitlesContent h3, #xwikihelptitlesContent h4, #xwikihelptitlesContent h5, #xwikihelptitlesContent h6{ + +#xwikihelptitlesContent h1, +#xwikihelptitlesContent h2, +#xwikihelptitlesContent h3, +#xwikihelptitlesContent h4, +#xwikihelptitlesContent h5, +#xwikihelptitlesContent h6 { margin: 0px; text-align: right; } -.accordionTabTitleBar{ +.accordionTabTitleBar { border: 1px solid #FFF; cursor: default; } @@ -840,65 +977,76 @@ Scriptaculous Acordeon Misc ----------------------------- */ -#xwikihelplistsContent ul, #xwikihelplistsContent ol{ +#xwikihelplistsContent ul, +#xwikihelplistsContent ol { margin: 0px; } -#contentcolumn .panel.large{ + +#contentcolumn .panel.large { width: 290px; } -.accordionTabTitleBar tt{ + +.accordionTabTitleBar tt { font-style: normal; font-size: 150%; font-weight: 100; padding: 0px 4px; } + /*.accordionTabContentBox div{ padding: 0px; }*/ -td.label{ +td.label { text-align: right; padding-right: 4px; } -#xwikiclassproperties, #xwikiobjects{ + +#xwikiclassproperties, +#xwikiobjects { border: 1px solid #DDD !important; overflow: hidden; } -.center{ + +.center { text-align: center; } -.padded{ +.padded { padding: 8px; } -#xwikihelpsyntax{ +#xwikihelpsyntax { border-top: 1px solid #DDD; padding: 2px 6px; margin: -2px 1px 0px; } -.editactions{ +.editactions { border: none !important; margin-top: 10px; padding: 0px; } -#historycontent td{ + +#historycontent td { padding: 2px; } -#xwikiuserprofile th{ + +#xwikiuserprofile th { background-color: transparent; text-align: right; } -#xwikiuserprofile td, #xwikiuserprofile th{ + +#xwikiuserprofile td, +#xwikiuserprofile th { padding: 4px; } -#xwikiobjects td{ +#xwikiobjects td { vertical-align: top; } -html > body .xwikidatatable{ +html>body .xwikidatatable { width: 100%; } @@ -908,35 +1056,37 @@ html > body .xwikidatatable{ border: 2px solid; } -.edit_section{ +.edit_section { visibility: hidden; display: block; overflow: hidden; height: 24px; width: 24px; -/* position: relative; + /* position: relative; top: -4em; */ } -.edit_section a{ + +.edit_section a { visibility: visible; position: relative; top: -1.2em; background: transparent url("icons/black-edit.png") left bottom no-repeat; padding: 0px 10px 20px; } + /* ------------------------ Page Layout Selection ------------------------ */ -td div.pagelayoutoption{ +td div.pagelayoutoption { margin: 0px auto; width: 106px; } -div.layoutmaquette{ +div.layoutmaquette { width: 100px; height: 100px; border: 1px solid #ddd; @@ -944,7 +1094,8 @@ div.layoutmaquette{ padding: 2px; } -div.lmleftcolumn, div.lmrightcolumn{ +div.lmleftcolumn, +div.lmrightcolumn { width: 20px; height: 60px; border: 1px solid #aaa; @@ -952,80 +1103,80 @@ div.lmleftcolumn, div.lmrightcolumn{ float: left; } -div.lmrightcolumn{ +div.lmrightcolumn { float: right; } -div.lmcontentcolumn{ +div.lmcontentcolumn { border: 1px solid #aaa; background-color: #eee; height: 90px; } -#leftcolumn div.lmcontentcolumn{ +#leftcolumn div.lmcontentcolumn { margin-left: 24px; } -#rightcolumn div.lmcontentcolumn{ +#rightcolumn div.lmcontentcolumn { margin-right: 24px; } -#bothcolumns div.lmcontentcolumn{ +#bothcolumns div.lmcontentcolumn { margin-left: 24px; margin-right: 24px; } -div.pagelayoutoption:hover .layoutmaquette{ +div.pagelayoutoption:hover .layoutmaquette { background-color: #ffd; } -div.pagelayoutoption:hover .lmcontentcolumn{ +div.pagelayoutoption:hover .lmcontentcolumn { background-color: #ddd; } div.pagelayoutoption:hover .lmleftcolumn, -div.pagelayoutoption:hover .lmrightcolumn{ +div.pagelayoutoption:hover .lmrightcolumn { background-color: #acf; } -div.pagelayoutoptions > table{ +div.pagelayoutoptions>table { width: 100%; text-align: center; } -div.pagelayoutoptions td{ +div.pagelayoutoptions td { padding: 2px; vertical-align: bottom; } -#selectedoption{ -} +#selectedoption {} -#selectedoption .lmcontentcolumn{ +#selectedoption .lmcontentcolumn { background-color: #acf; } #selectedoption .lmleftcolumn, -#selectedoption .lmrightcolumn{ +#selectedoption .lmrightcolumn { background-color: #369; } -.pagelayoutoption label{ +.pagelayoutoption label { color: #aaa; } -#selectedoption label, .pagelayoutoption:hover label{ +#selectedoption label, +.pagelayoutoption:hover label { color: #000; } -.hastooltip{ +.hastooltip { border-bottom: 1px dotted #000; cursor: help; } -#dhtmltooltip{ +#dhtmltooltip { border: 1px solid #aaa; padding: 2px 4px; background-color: #ffd; @@ -1033,61 +1184,66 @@ div.pagelayoutoptions td{ position: absolute; } -#panelwizardbuttons{ +#panelwizardbuttons { padding: 8px 5px 0px; margin: 8px -5px 0px; border-top: 1px solid #ddd; text-align: left; } -.alleditcontent{ +.alleditcontent { position: relative; width: auto; margin: 20px 20px 0px 20px; } -.floatcontainer{ +.floatcontainer { overflow: hidden; } -#xwikieditcontent, .xwikitabpanescontainer { +#xwikieditcontent, +.xwikitabpanescontainer { border: 2px solid #3381CC; padding: 3px 8px 3px 3px; overflow: auto; } -#xwikieditcontent div{ +#xwikieditcontent div { overflow: hidden; } -* html #xwikieditcontent{ +* html #xwikieditcontent { padding: 0px 3px 3px 3px; } -.editinfo{ +.editinfo { height: 2em; font-weight: bold; font-size: 1em; line-height: 2em; } -#edit{ + +#edit { padding: 0px; margin: 0px; border: none; } -#xwikitext{ + +#xwikitext { clear: both; } -#panelsBackground{ + +#panelsBackground { height: 20px; background-color: #384554; } -#xwikidoctitleinput{ +#xwikidoctitleinput { width: 100%; font-size: 150%; } -* html form{ + +* html form { margin-top: 0px; } @@ -1096,6 +1252,7 @@ div.pagelayoutoptions td{ display: inline; margin-right: 2px; } + .xwiki-form-listclass { margin-right: 10px; } @@ -1114,28 +1271,34 @@ div.attachment { border-left: 1px solid #eee; font-size: 85%; } + .attachment .mime { display: block; float: left; padding-right: 8px; padding-bottom: 4px; } + .attachment .information { position: relative; overflow: hidden; } + .attachment .name { display: block; float: left; font-size: 170%; padding: 0px 6px 4px 0px; } + .attachment .version { display: block; } + .attachment .meta { clear: left; } + .attachment .xwikibuttonlinks { float: right; font-size: 130%; @@ -1143,11 +1306,11 @@ div.attachment { } .mceEditorContainer { - display: block; - height: 100% !important; - position: relative; + display: block; + height: 100% !important; + position: relative; } .mceToolbar { - z-index: 30002; -} \ No newline at end of file + z-index: 30002; +} diff --git a/src/main/webapp/templates/htmlheader.vm b/src/main/webapp/templates/htmlheader.vm index e6ac1dc05..df70596b4 100644 --- a/src/main/webapp/templates/htmlheader.vm +++ b/src/main/webapp/templates/htmlheader.vm @@ -89,8 +89,12 @@ #if($xcontext.action == "admin" || $xcontext.action == "import" || $xcontext.action == "export") #set($bodyAction = "view") #end +#set($HTMLBodyCSSClasses = "wiki-${xcontext.database} space-${escapetool.xml($doc.space.replaceAll(' ', '_'))} ${bodyAction}body #if($showLeftPanels == "0")hideleft#end#if($showRightPanels == "0")hideright#end#if($hidecolumns && ($!hidecolumns == 1))hidelefthideright#end") +#if($cel_loadAdminMenuBar) + #set($HTMLBodyCSSClasses = "$!{HTMLBodyCSSClasses} celementsmenubarvisible") +#end ## These elements will be closed in the htmlfooter.vm file -<$bodyTagName id="body" class="wiki-${xcontext.database} space-${escapetool.xml($doc.space.replaceAll(' ', '_'))} ${bodyAction}body #if($showLeftPanels == "0")hideleft#end#if($showRightPanels == "0")hideright#end#if($hidecolumns && ($!hidecolumns == 1))hidelefthideright#end"> +<$bodyTagName id="body" class="$HTMLBodyCSSClasses.trim()"> #if($cel_loadAdminMenuBar) #parse('celMacros/MenuBar.vm') #end From 9843e31257667dda366113b16047df8b5cfb4755 Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Thu, 12 Mar 2026 02:20:15 +0100 Subject: [PATCH 19/56] syntax --- src/main/webapp/templates/htmlheader.vm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/webapp/templates/htmlheader.vm b/src/main/webapp/templates/htmlheader.vm index df70596b4..1cb1dc0e7 100644 --- a/src/main/webapp/templates/htmlheader.vm +++ b/src/main/webapp/templates/htmlheader.vm @@ -89,7 +89,16 @@ #if($xcontext.action == "admin" || $xcontext.action == "import" || $xcontext.action == "export") #set($bodyAction = "view") #end -#set($HTMLBodyCSSClasses = "wiki-${xcontext.database} space-${escapetool.xml($doc.space.replaceAll(' ', '_'))} ${bodyAction}body #if($showLeftPanels == "0")hideleft#end#if($showRightPanels == "0")hideright#end#if($hidecolumns && ($!hidecolumns == 1))hidelefthideright#end") +#set($HTMLBodyCSSClasses = "wiki-${xcontext.database} space-${escapetool.xml($doc.space.replaceAll(' ', '_'))} ${bodyAction}body ") +#if($showLeftPanels == "0") + #set($HTMLBodyCSSClasses = "$!{HTMLBodyCSSClasses} hideleft") +#end +#if($showRightPanels == "0") + #set($HTMLBodyCSSClasses = "$!{HTMLBodyCSSClasses} hideright") +#end +#if($hide columns && ($!hidecolumns == 1)) + #set($HTMLBodyCSSClasses = "$!{HTMLBodyCSSClasses} hidelefthideright") +#end #if($cel_loadAdminMenuBar) #set($HTMLBodyCSSClasses = "$!{HTMLBodyCSSClasses} celementsmenubarvisible") #end From ed2b994ad7900bf8a5bad1eea10a16b3b9e5eb9b Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Thu, 12 Mar 2026 02:25:13 +0100 Subject: [PATCH 20/56] syntax --- src/main/webapp/templates/htmlheader.vm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/webapp/templates/htmlheader.vm b/src/main/webapp/templates/htmlheader.vm index 1cb1dc0e7..a827666c2 100644 --- a/src/main/webapp/templates/htmlheader.vm +++ b/src/main/webapp/templates/htmlheader.vm @@ -96,7 +96,7 @@ #if($showRightPanels == "0") #set($HTMLBodyCSSClasses = "$!{HTMLBodyCSSClasses} hideright") #end -#if($hide columns && ($!hidecolumns == 1)) +#if($hidecolumns && ($!hidecolumns == 1)) #set($HTMLBodyCSSClasses = "$!{HTMLBodyCSSClasses} hidelefthideright") #end #if($cel_loadAdminMenuBar) From 8ea8e724c3de294c113e72461592f2304f0f4954 Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Thu, 12 Mar 2026 07:24:21 +0100 Subject: [PATCH 21/56] improve screenlayout.css --- .../webapp/skins/albatross/screenlayout.css | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/src/main/webapp/skins/albatross/screenlayout.css b/src/main/webapp/skins/albatross/screenlayout.css index b71415672..f0fe917c3 100644 --- a/src/main/webapp/skins/albatross/screenlayout.css +++ b/src/main/webapp/skins/albatross/screenlayout.css @@ -147,27 +147,6 @@ Global header /*pour éviter pb dans IE -- a regler*/ } - - - - - - - - - - - - - - - - - - - - - /* --------------------------------------- Space header, footer @@ -321,8 +300,6 @@ Content padding-bottom: 20px; } -#actionmenu {} - #xwikieditcontent textarea#content { width: 100%; } From a25b844f6112edbfc860489820c77f2cb203cfdd Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Thu, 12 Mar 2026 08:49:01 +0100 Subject: [PATCH 22/56] flatten cascating @import for stylesheets --- .../webapp/docs/xwiki/XWiki/DefaultSkin.xml | 160 ------------------ src/main/webapp/skins/albatross/style.css | 123 ++++++-------- src/main/webapp/templates/stylesheets2.vm | 22 +-- 3 files changed, 65 insertions(+), 240 deletions(-) delete mode 100644 src/main/webapp/docs/xwiki/XWiki/DefaultSkin.xml diff --git a/src/main/webapp/docs/xwiki/XWiki/DefaultSkin.xml b/src/main/webapp/docs/xwiki/XWiki/DefaultSkin.xml deleted file mode 100644 index 1c63f4f2d..000000000 --- a/src/main/webapp/docs/xwiki/XWiki/DefaultSkin.xml +++ /dev/null @@ -1,160 +0,0 @@ - - -XWiki -DefaultSkin - -en -0 -XWiki.XWikiPreferences -XWiki.Admin -XWiki.Admin - -xwiki:XWiki.Admin -1167576476000 -1167576476000 -1167576476000 -1.1 -$msg.get("xe.admin.skin") - - - -Imported from XAR -false -xwiki/2.0 -false - - -XWiki.XWikiSkins - - - - - - - - -0 -baseskin -2 -Base Skin -30 -0 -com.xpn.xwiki.objects.classes.StringClass - - -0 -edit.vm -9 -Edit -15 -80 -0 -com.xpn.xwiki.objects.classes.TextAreaClass - - -0 -footer.vm -6 -Footer -15 -80 -0 -com.xpn.xwiki.objects.classes.TextAreaClass - - -0 -header.vm -5 -Header -15 -80 -0 -com.xpn.xwiki.objects.classes.TextAreaClass - - -0 -logo -3 -Logo -30 -0 -com.xpn.xwiki.objects.classes.StringClass - - -0 -name -1 -Name -30 -0 -com.xpn.xwiki.objects.classes.StringClass - - -0 -style.css -4 -Style -15 -80 -0 -com.xpn.xwiki.objects.classes.TextAreaClass - - -0 -view.vm -8 -View -15 -80 -0 -com.xpn.xwiki.objects.classes.TextAreaClass - - -0 -viewheader.vm -7 -View Header -15 -80 -0 -com.xpn.xwiki.objects.classes.TextAreaClass - - -XWiki.DefaultSkin -0 -XWiki.XWikiSkins -c52655e2-0fae-4b2c-8508-378d1c1fb4ac - -colibri - - - - - - - - - - - -logo.png - - -Default XWiki Skin - - - - - - - - - - - -{{velocity}} -$msg.get("xe.admin.skin.makeyourown") - -* {{html clean="false"}}<a href="$doc.getURL('edit', 'editor=object&amp;classname=XWiki.XWikiSkins')">$msg.get('xe.admin.skin.editskin')</a>{{/html}} -* [[$msg.get('xe.admin.skin.testskin')>>Main.WebHome?skin=${doc.fullName}]] -{{/velocity}} diff --git a/src/main/webapp/skins/albatross/style.css b/src/main/webapp/skins/albatross/style.css index 14dc43f34..57fbc9752 100644 --- a/src/main/webapp/skins/albatross/style.css +++ b/src/main/webapp/skins/albatross/style.css @@ -1,29 +1,6 @@ -@import "elements.css"; - -@import "classes.css"; - -/* @import "js/xwiki/chartwizard/chwSkin.css";*/ -@import "xwiki.css"; - -@import "wiki.css"; - -@import "page.css"; - -@import "rss.css"; - -@import "screenlayout.css?ver=20230902"; - -@import "microformats.css"; - -@import "presentation.css"; - -@import "colorsblack.css"; - -/*@import "ie.css"; */ - /* Empty lines between block elements. Generated by the new rendering */ .wikimodel-emptyline { - height:1em; + height: 1em; } .rightmenu a { @@ -55,7 +32,8 @@ } /* Note that h6 styling is provided in order to ensure backward compatibility after XSALBATROSS-71 */ -.panel .accordionTabTitleBar h1, .panel .accordionTabTitleBar h6 { +.panel .accordionTabTitleBar h1, +.panel .accordionTabTitleBar h6 { border-top: 1px solid #999; } @@ -88,7 +66,8 @@ li.selected { /* Note that h6 styling is provided in order to ensure backward compatibility after XSALBATROSS-71 */ -#xwikieditcontent .accordionTabTitleBar h1, #xwikieditcontent .accordionTabTitleBar h6 { +#xwikieditcontent .accordionTabTitleBar h1, +#xwikieditcontent .accordionTabTitleBar h6 { width: 100%; } @@ -112,8 +91,11 @@ div.panellayoutcontainer-5col .panellayoutcol { width: 20%; } -div.panellayoutcontainer-1col,div.panellayoutcontainer-2col,div.panellayoutcontainer-3col,div.panellayoutcontainer-4col,div.panellayoutcontainer-5col - { +div.panellayoutcontainer-1col, +div.panellayoutcontainer-2col, +div.panellayoutcontainer-3col, +div.panellayoutcontainer-4col, +div.panellayoutcontainer-5col { overflow: auto; clear: left; height: 1%; @@ -154,20 +136,18 @@ div.panellayoutcontainer-1col,div.panellayoutcontainer-2col,div.panellayoutconta color: #fff; border-bottom: 1px solid #ddd; background-image: - url("icons/black-less-cont.png") - ; + url("icons/black-less-cont.png"); } #xwikicontent .panellayoutcol .collapsed .xwikipaneltitle { background-color: #CDE; color: #fff; background-image: - url("icons/black-more-cont.png") - ; + url("icons/black-more-cont.png"); } -#xwikicontent .panellayoutcol .expanded h1.xwikipaneltitle:hover,#xwikicontent .panellayoutcol .collapsed h1.xwikipaneltitle:hover - { +#xwikicontent .panellayoutcol .expanded h1.xwikipaneltitle:hover, +#xwikicontent .panellayoutcol .collapsed h1.xwikipaneltitle:hover { color: #fff; } @@ -177,45 +157,46 @@ div.panellayoutcontainer-1col,div.panellayoutcontainer-2col,div.panellayoutconta */ #docExtraTabs { - border: 0px !important; - background-color: white; + border: 0px !important; + background-color: white; } #docExtrasTabsUl { - float: left; + float: left; } #docExtraTabs ul.xwikitabbar { - width: auto; - padding: 0; + width: auto; + padding: 0; } #docextrapanes { - border : solid 1px #3280CC; - background-color: #E4F6FF; - padding: 10px; - clear: both; + border: solid 1px #3280CC; + background-color: #E4F6FF; + padding: 10px; + clear: both; } #docextraanchors { - height: 2em; + height: 2em; } -#_information dd, #_information dt { - padding-top: 4px; - padding-bottom: 4px; - clear: both; +#_information dd, +#_information dt { + padding-top: 4px; + padding-bottom: 4px; + clear: both; } #_information #tags { - width: 400px; - font-size: 110%; - float:left; + width: 400px; + font-size: 110%; + float: left; } #tageditsavewrapper { - display:inline; - margin:0 0 10px 10px; + display: inline; + margin: 0 0 10px 10px; } #tageditsavesuccess { @@ -233,50 +214,52 @@ div.panellayoutcontainer-1col,div.panellayoutcontainer-2col,div.panellayoutconta */ ul.xlist { - margin: 0 0 0 0.5em !important; - padding: 0 !important; + margin: 0 0 0 0.5em !important; + padding: 0 !important; } ul.xlist li.xunderline { - border-bottom: solid 1px #efefef !important; + border-bottom: solid 1px #efefef !important; } ul.xlist li.xhighlight:hover { - background-color: lemonChiffon; + background-color: lemonChiffon; } ul.xlist li { - width: 100% !important; - padding-top: 0.2em; - list-style-type: none; + width: 100% !important; + padding-top: 0.2em; + list-style-type: none; } -ul.xlist li.space, ul.xlist li.page, ul.xlist li.comment, ul.xlist li.attachment { - background-repeat: no-repeat; - background-position: 2px 3px; +ul.xlist li.space, +ul.xlist li.page, +ul.xlist li.comment, +ul.xlist li.attachment { + background-repeat: no-repeat; + background-position: 2px 3px; } ul.xlist li.space { - background-image: url( ../../resources/icons/silk/folder.gif ); + background-image: url(../../resources/icons/silk/folder.gif ); } ul.xlist li.page { - background-image: url( ../../resources/icons/silk/page_white_text.gif ); + background-image: url(../../resources/icons/silk/page_white_text.gif ); } ul.xlist li.comment { - background-image: url( ../../resources/icons/silk/comment.gif ); + background-image: url(../../resources/icons/silk/comment.gif ); } ul.xlist li.attachment { - background-image: url( ../../resources/icons/silk/attach.gif ); + background-image: url(../../resources/icons/silk/attach.gif ); } ul.xlist li.xitem div.xitemcontainer { - text-indent: 1.5em; + text-indent: 1.5em; } ul.xlist li.xitem div.xitemcontainer ul.xlist { - text-indent: 0em; + text-indent: 0em; } - diff --git a/src/main/webapp/templates/stylesheets2.vm b/src/main/webapp/templates/stylesheets2.vm index 3b3596d41..c17ea1b10 100644 --- a/src/main/webapp/templates/stylesheets2.vm +++ b/src/main/webapp/templates/stylesheets2.vm @@ -3,9 +3,17 @@ ## include CSS using the element but it needs to go in the
. Thus instead we do ## the CSS inclusion inline here - +$services.css.includeCSSPage(':skins/albatross/style.css')## +$services.css.includeCSSPage(':skins/albatross/elements.css')## +$services.css.includeCSSPage(':skins/albatross/classes.css')## +$services.css.includeCSSPage(':skins/albatross/xwiki.css')## +$services.css.includeCSSPage(':skins/albatross/wiki.css')## +$services.css.includeCSSPage(':skins/albatross/page.css')## +$services.css.includeCSSPage(':skins/albatross/rss.css')## +$services.css.includeCSSPage(':skins/albatross/screenlayout.css')## +$services.css.includeCSSPage(':skins/albatross/microformats.css')## +$services.css.includeCSSPage(':skins/albatross/presentation.css')## +$services.css.includeCSSPage(':skins/albatross/colorsblack.css')## #set($defaultstyle = $xwiki.getSpacePreference('stylesheet')) #if($defaultstyle != '') @@ -14,12 +22,6 @@ #end -#if($request.getHeader('user-agent').indexOf('MSIE') != -1) - -#end - -#end \ No newline at end of file +#end From 2e565e9ed091c9638f5949dc19d40fdd447b5aad Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Thu, 12 Mar 2026 09:20:52 +0100 Subject: [PATCH 23/56] move styles.css imports to stylesheets.vm --- src/main/webapp/templates/stylesheets.vm | 37 ++++++-------------- src/main/webapp/templates/stylesheets2.vm | 42 ----------------------- 2 files changed, 11 insertions(+), 68 deletions(-) delete mode 100644 src/main/webapp/templates/stylesheets2.vm diff --git a/src/main/webapp/templates/stylesheets.vm b/src/main/webapp/templates/stylesheets.vm index db7928c33..4745e2d4d 100644 --- a/src/main/webapp/templates/stylesheets.vm +++ b/src/main/webapp/templates/stylesheets.vm @@ -1,27 +1,12 @@ -#template('colorThemeInit.vm') -## The default stylesheet configuration option allows to override the default style.css CSS -#set ($defaultstyle = $xwiki.getSpacePreference('stylesheet')) -#if ($defaultstyle == '') - #set ($defaultstyle = "style.css") -#end -#set ($defaultStyleURL = $xwiki.getSkinFile($defaultstyle, true)) - - -#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')) -#if ($stylesheets != '') - #foreach ($stylesheet in $util.split($stylesheets, ',')) - #if (!$stylesheet.equalsIgnoreCase($defaultstyle)) - - #end - #end -#end +$services.css.includeCSSPage(':skins/albatross/style.css')## +$services.css.includeCSSPage(':skins/albatross/elements.css')## +$services.css.includeCSSPage(':skins/albatross/classes.css')## +$services.css.includeCSSPage(':skins/albatross/xwiki.css')## +$services.css.includeCSSPage(':skins/albatross/wiki.css')## +$services.css.includeCSSPage(':skins/albatross/page.css')## +$services.css.includeCSSPage(':skins/albatross/rss.css')## +$services.css.includeCSSPage(':skins/albatross/screenlayout.css')## +$services.css.includeCSSPage(':skins/albatross/microformats.css')## +$services.css.includeCSSPage(':skins/albatross/presentation.css')## +$services.css.includeCSSPage(':skins/albatross/colorsblack.css')## $services.css.displayAllCSS() diff --git a/src/main/webapp/templates/stylesheets2.vm b/src/main/webapp/templates/stylesheets2.vm deleted file mode 100644 index c17ea1b10..000000000 --- a/src/main/webapp/templates/stylesheets2.vm +++ /dev/null @@ -1,42 +0,0 @@ -## Includes CSS files inline for modes other than the Servlet mode. This is because for example -## in Portlet mode the HTML we create cannot contain a
or element. We normally -## include CSS using the element but it needs to go in the
. Thus instead we do -## the CSS inclusion inline here - -$services.css.includeCSSPage(':skins/albatross/style.css')## -$services.css.includeCSSPage(':skins/albatross/elements.css')## -$services.css.includeCSSPage(':skins/albatross/classes.css')## -$services.css.includeCSSPage(':skins/albatross/xwiki.css')## -$services.css.includeCSSPage(':skins/albatross/wiki.css')## -$services.css.includeCSSPage(':skins/albatross/page.css')## -$services.css.includeCSSPage(':skins/albatross/rss.css')## -$services.css.includeCSSPage(':skins/albatross/screenlayout.css')## -$services.css.includeCSSPage(':skins/albatross/microformats.css')## -$services.css.includeCSSPage(':skins/albatross/presentation.css')## -$services.css.includeCSSPage(':skins/albatross/colorsblack.css')## - -#set($defaultstyle = $xwiki.getSpacePreference('stylesheet')) -#if($defaultstyle != '') - -#end - - - -#set($style = "$!xwiki.getSpacePreference('style')") -#if($style != '') - -#end - -#set($style = "$!doc.display('style', 'view', $doc.getObject('XWiki.XWikiHTML'))") -#if($style != '') - -#end From 2a0c4a4236605485219f0ef561bf34fff5f7e3bd Mon Sep 17 00:00:00 2001 From: Chantal Pichler Date: Thu, 12 Mar 2026 09:28:03 +0100 Subject: [PATCH 24/56] reformat minified files --- .../resources/js/xwiki/editors/dataeditors.js | 277 +++-- .../js/xwiki/editors/fullScreenEdit.js | 577 ++++++--- .../js/xwiki/xwikiexplorer/xwikiexplorer.js | 1026 +++++++++++++---- 3 files changed, 1398 insertions(+), 482 deletions(-) diff --git a/src/main/webapp/resources/js/xwiki/editors/dataeditors.js b/src/main/webapp/resources/js/xwiki/editors/dataeditors.js index a4d27a645..192b7cf69 100644 --- a/src/main/webapp/resources/js/xwiki/editors/dataeditors.js +++ b/src/main/webapp/resources/js/xwiki/editors/dataeditors.js @@ -1,78 +1,205 @@ -$j(document).ready(function(){$$("#xwikiobjects a.delete").each(function(B){B.observe("click",function(C){B.blur(); -C.stop(); -if(!B.disabled){new XWiki.widgets.ConfirmedAjaxRequest(B.href,{onCreate:function(){B.disabled=true -},onSuccess:function(){var D=B.up(".xobject"); -var E=D.up(".xclass"); -D.remove(); -if(E.select(".xobject").size()==0){E.remove() -}}.bind(this),onComplete:function(){B.disabled=false -}},{confirmationText:"$msg.get('core.editors.object.delete.confirm')",progressMessageText:"$msg.get('core.editors.object.delete.inProgress')",successMessageText:"$msg.get('core.editors.object.delete.done')",failureMessageText:"$msg.get('core.editors.object.delete.failed')"}) -}}.bindAsEventListener()) +// this is minified code reformatted +$j(document).ready(function () { + $$("#xwikiobjects a.delete").each(function (B) { + B.observe( + "click", + function (C) { + B.blur(); + C.stop(); + if (!B.disabled) { + new XWiki.widgets.ConfirmedAjaxRequest( + B.href, + { + onCreate: function () { + B.disabled = true; + }, + onSuccess: function () { + var D = B.up(".xobject"); + var E = D.up(".xclass"); + D.remove(); + if (E.select(".xobject").size() == 0) { + E.remove(); + } + }.bind(this), + onComplete: function () { + B.disabled = false; + }, + }, + { + confirmationText: + "$msg.get('core.editors.object.delete.confirm')", + progressMessageText: + "$msg.get('core.editors.object.delete.inProgress')", + successMessageText: "$msg.get('core.editors.object.delete.done')", + failureMessageText: + "$msg.get('core.editors.object.delete.failed')", + }, + ); + } + }.bindAsEventListener(), + ); + }); + $$("#xwikiobjects a.edit").each(function (B) { + B.observe( + "click", + function (C) { + B.blur(); + C.stop(); + window.location = B.href; + }.bindAsEventListener(), + ); + }); + $$("#xwikiobjects .xclass-title").each(function (B) { + B.observe( + "click", + function (C) { + B.up().toggleClassName("collapsed"); + }.bindAsEventListener(), + ); + }); + $$("#xwikiobjects .xclass").each(function (B) { + B.addClassName("collapsable"); + }); + var A = $$(".xproperty").size(); + $$(".xproperty").each(function (B) { + B.addClassName("collapsable"); + if (A > 1) { + B.toggleClassName("collapsed"); + } + }); + $$(".xproperty-title").each(function (B) { + B.observe( + "click", + function (C) { + B.up().toggleClassName("collapsed"); + }.bindAsEventListener(), + ); + }); + A = $$("#xwikiobjects .xobject").size(); + $$("#xwikiobjects .xobject").each(function (B) { + B.addClassName("collapsable"); + if (A > 1) { + B.toggleClassName("collapsed"); + } + }); + $$("#xwikiobjects .xobject-title").each(function (B) { + B.observe( + "click", + function (C) { + B.up().toggleClassName("collapsed"); + }.bindAsEventListener(), + ); + }); + $$(".xobject-content dt, .xproperty-content dt").each(function (B) { + if (!B.down("input[type=checkbox]")) { + B.addClassName("collapsable"); + B.insertBefore( + new Element("span", { class: "collapser" }), + B.firstDescendant(), + ); + } else { + B.addClassName("uncollapsable"); + } + }); + $$(".xobject-content dt label, .xproperty-content dt label").each( + function (B) { + B.observe( + "click", + function (C) { + if (B.up("dt").down("span").hasClassName("collapsed")) { + B.up("dt").next("dd").toggle(); + B.up("dt").down("span").toggleClassName("collapsed"); + } + }.bindAsEventListener(), + ); + }, + ); + $$(".collapser").each(function (B) { + B.observe( + "click", + function (C) { + B.up("dt").next("dd").toggle(); + B.toggleClassName("collapsed"); + }.bindAsEventListener(), + ); + }); }); -$$("#xwikiobjects a.edit").each(function(B){B.observe("click",function(C){B.blur(); -C.stop(); -window.location=B.href -}.bindAsEventListener()) +if (typeof XWiki == "undefined") { + XWiki = new Object(); +} +if (typeof XWiki.editors == "undefined") { + XWiki.editors = new Object(); +} +XWiki.editors.XPropertyOrdering = Class.create({ + initialize: function () { + $$(".xproperty-content").each(function (A) { + A.select("input").each(function (B) { + if (B.id.endsWith("_number")) { + A.numberProperty = B; + B.up().hide(); + if (B.up().previous("dt")) { + B.up().previous("dt").hide(); + } + } + }); + }); + if ($$(".xproperty").size() <= 1) { + return; + } + $$(".xproperty-title").each(function (B) { + var A = new Element("img", { + src: "$xwiki.getSkinFile('icons/datamodel/move.png', true)", + class: "move", + alt: "move", + title: "Drag and drop to change the order", + }); + B.makePositioned(); + B.appendChild(A); + A.observe( + "click", + function (C) { + C.stop(); + }.bindAsEventListener(), + ); + }); + Sortable.create("xclassContent", { + tag: "div", + only: "xproperty", + handle: "move", + starteffect: this.startDrag.bind(this), + endeffect: this.endDrag.bind(this), + onUpdate: this.updateOrder.bind(this), + }); + }, + updateOrder: function (A) { + var C = A.childElements(); + for (var B = 0; B < C.size(); ++B) { + var D = C[B].down(".xproperty-content"); + D.numberProperty.value = B + 1; + } + }, + startDrag: function (A) { + A.addClassName("dragged"); + $("xclassContent") + .childElements() + .each(function (B) { + B._expandedBeforeDrag = !B.hasClassName("collapsed"); + B.addClassName("collapsed"); + }); + }, + endDrag: function (A) { + A.removeClassName("dragged"); + $("xclassContent") + .childElements() + .each(function (B) { + if (B._expandedBeforeDrag) { + B.removeClassName("collapsed"); + } + }); + }, }); -$$("#xwikiobjects .xclass-title").each(function(B){B.observe("click",function(C){B.up().toggleClassName("collapsed") -}.bindAsEventListener()) +$j(document).ready(function () { + if ($("xclassContent")) { + new XWiki.editors.XPropertyOrdering(); + } }); -$$("#xwikiobjects .xclass").each(function(B){B.addClassName("collapsable") -}); -var A=$$(".xproperty").size(); -$$(".xproperty").each(function(B){B.addClassName("collapsable"); -if(A>1){B.toggleClassName("collapsed") -}}); -$$(".xproperty-title").each(function(B){B.observe("click",function(C){B.up().toggleClassName("collapsed") -}.bindAsEventListener()) -}); -A=$$("#xwikiobjects .xobject").size(); -$$("#xwikiobjects .xobject").each(function(B){B.addClassName("collapsable"); -if(A>1){B.toggleClassName("collapsed") -}}); -$$("#xwikiobjects .xobject-title").each(function(B){B.observe("click",function(C){B.up().toggleClassName("collapsed") -}.bindAsEventListener()) -}); -$$(".xobject-content dt, .xproperty-content dt").each(function(B){if(!B.down("input[type=checkbox]")){B.addClassName("collapsable"); -B.insertBefore(new Element("span",{"class":"collapser"}),B.firstDescendant()) -}else{B.addClassName("uncollapsable") -}}); -$$(".xobject-content dt label, .xproperty-content dt label").each(function(B){B.observe("click",function(C){if(B.up("dt").down("span").hasClassName("collapsed")){B.up("dt").next("dd").toggle(); -B.up("dt").down("span").toggleClassName("collapsed") -}}.bindAsEventListener()) -}); -$$(".collapser").each(function(B){B.observe("click",function(C){B.up("dt").next("dd").toggle(); -B.toggleClassName("collapsed") -}.bindAsEventListener()) -}) -}); -if(typeof (XWiki)=="undefined"){XWiki=new Object() -}if(typeof (XWiki.editors)=="undefined"){XWiki.editors=new Object() -}XWiki.editors.XPropertyOrdering=Class.create({initialize:function(){$$(".xproperty-content").each(function(A){A.select("input").each(function(B){if(B.id.endsWith("_number")){A.numberProperty=B; -B.up().hide(); -if(B.up().previous("dt")){B.up().previous("dt").hide() -}}}) -}); -if($$(".xproperty").size()<=1){return -}$$(".xproperty-title").each(function(B){var A=new Element("img",{src:"$xwiki.getSkinFile('icons/datamodel/move.png', true)","class":"move",alt:"move",title:"Drag and drop to change the order"}); -B.makePositioned(); -B.appendChild(A); -A.observe("click",function(C){C.stop() -}.bindAsEventListener()) -}); -Sortable.create("xclassContent",{tag:"div",only:"xproperty",handle:"move",starteffect:this.startDrag.bind(this),endeffect:this.endDrag.bind(this),onUpdate:this.updateOrder.bind(this)}) -},updateOrder:function(A){var C=A.childElements(); -for(var B=0; -B0){this.makeFullScreen(A[0]) -}}},addBehavior:function(A){if(this.isWysiwyg20Content(A)){this.addWysiwyg20ContentButton(A) -}else{if(this.isWysiwyg10Content(A)){this.addWysiwyg10ContentButton(A) -}else{if(this.isWikiContent(A)){this.addWikiContentButton(A) -}else{if(this.isWysiwyg20Field(A)){this.addWysiwyg20FieldButton(A) -}else{if(this.isWikiField(A)){this.addWikiFieldButton(A) -}else{if(this.isWysiwyg10Field(A)){this.addWysiwyg10FieldButton(A) -}}}}}}},addWysiwyg20Listener:function(){document.observe("xwiki:wysiwyg:created",this.wysiwyg20Created.bindAsEventListener(this)) -},wysiwyg20Created:function(B,A){},isWikiContent:function(A){return A.name=="content"&&A.visible() -},isWysiwyg10Content:function(A){return A.name=="content"&&(Prototype.Browser.IE?A.previous(".mceEditorContainer"):A.next(".mceEditorContainer")) -},isWysiwyg20Content:function(A){return A.hasClassName("xRichTextEditor")&&A.up("div[id^=content_container]") -},isWikiField:function(A){return A.visible() -},isWysiwyg10Field:function(A){return !A.visible()&&A.name!="content"&&(Prototype.Browser.IE?A.previous(".mceEditorContainer"):A.next(".mceEditorContainer")) -},isWysiwyg20Field:function(A){return A.hasClassName("xRichTextEditor")&&!A.up("div[id^=content_container]") -},addWikiContentButton:function(A){A._toolbar=$(document.body).down(".leftmenu2"); -if(A._toolbar){A._toolbar.insert({top:this.createOpenButton(A)}) -}else{this.addWikiFieldButton(A) -}},addWysiwyg10ContentButton:function(E){var B=(Prototype.Browser.IE?E.previous(".mceEditorContainer"):E.next(".mceEditorContainer")); -if(!B){return false -}var D=B.down(".mceToolbar"); -if(!D){return false -}var A=new Element("span",{"class":"mce_editor_fullscreentoolbar"}); -var C=new Element("a",{"class":"mceButtonNormal"}); -A.insert(new Element("img",{"class":"mceSeparatorLine",height:15,width:1,src:D.down("img.mceSeparatorLine").src})); -A.insert(C.insert(this.createOpenButton(B))); -D.insert(A); -B._toolbar=D; -return true -},addWysiwyg20ContentButton:function(B){var A=B.down(".gwt-MenuBar"); -if(!A){if(!B._x_fullScreenLoader){B._x_fullScreenLoader_iterations=0; -B._x_fullScreenLoader=new PeriodicalExecuter(function(C){if(C._x_fullScreenLoader_iteration>100){C._x_fullScreenLoader.stop(); -C._x_fullScreenLoader=false; -return -}C._x_fullScreenLoader_iteration++; -this.addWysiwyg20ContentButton(C) -}.bind(this,B),0.2) -}return false -}A.insert({top:this.createOpenButton(B)}); -B._toolbar=A; -if(B._x_fullScreenLoader){B._x_fullScreenLoader.stop(); -B._x_fullScreenLoader=false -}return true -},addWikiFieldButton:function(A){Element.insert(A,{before:this.createOpenLink(A)}) -},addWysiwyg10FieldButton:function(A){this.addWysiwyg10ContentButton(A) -},addWysiwyg20FieldButton:function(A){this.addWysiwyg20ContentButton(A) -},createOpenButton:function(B){var A=new Element("img",{"class":"fullScreenEditButton",title:"$msg.get('core.editors.fullscreen.editFullScreen')",alt:"$msg.get('core.editors.fullscreen.editFullScreen')",src:"$xwiki.getSkinFile('icons/silk/arrow_out.gif', true)"}); -A.observe("click",this.makeFullScreen.bind(this,B)); -A.observe("mousedown",this.preventDrag.bindAsEventListener(this)); -B._x_fullScreenActivator=A; -A._x_maximizedElement=B; -return A -},createOpenLink:function(B){var C=new Element("div",{"class":"fullScreenEditLinkContainer"}); -var A=new Element("a",{"class":"fullScreenEditLink",title:"$msg.get('core.editors.fullscreen.editFullScreen')"}); -A.update("${msg.get('core.editors.fullscreen.editFullScreen')} »"); -A.observe("click",this.makeFullScreen.bind(this,B)); -C.update(A); -B._x_fullScreenActivator=A; -A._x_maximizedElement=B; -return C -},createCloseButtons:function(){this.closeButton=new Element("img",{"class":"fullScreenCloseButton",title:"$msg.get('core.editors.fullscreen.exitFullScreen')",alt:"$msg.get('core.editors.fullscreen.exitFullScreen')",src:"$xwiki.getSkinFile('icons/silk/arrow_in.gif', true)"}); -this.closeButton.observe("click",this.closeFullScreen.bind(this)); -this.closeButton.observe("mousedown",this.preventDrag.bindAsEventListener(this)); -this.closeButton.hide(); -this.actionCloseButton=new Element("input",{type:"button","class":"button",value:"$msg.get('core.editors.fullscreen.exitFullScreen')"}); -this.actionCloseButtonWrapper=new Element("span",{"class":"buttonwrapper"}); -this.actionCloseButtonWrapper.update(this.actionCloseButton); -this.actionCloseButton.observe("click",this.closeFullScreen.bind(this)); -this.actionCloseButtonWrapper.hide(); -this.buttons.down(".buttons").insert({top:this.actionCloseButtonWrapper}) -},makeFullScreen:function(A){if(this.maximizedReference){if(A.id){this.maximizedReference.value=A.tagName+"[id='"+A.id+"']" -}else{if(A.name){this.maximizedReference.value=A.tagName+"[name='"+A.name+"']" -}else{if(A.className){this.maximizedReference.value=A.tagName+"."+A.className -}}}}this.maximized=A; -A._originalStyle={width:A.style.width,height:A.style.height}; -if(A.hasClassName("xRichTextEditor")){var D=A.down(".gwt-RichTextArea"); -D._originalStyle={width:D.style.width,height:D.style.height} -}else{if(A.hasClassName("mceEditorContainer")){var D=A.down(".mceEditorIframe"); -D._originalStyle={width:D.style.width,height:D.style.height}; -var C=A.down(".mceEditorSource"); -C._originalStyle={width:C.style.width,height:C.style.height} -}}var E=A.up(); -E.addClassName("fullScreenWrapper"); -if(A._toolbar){if(A._toolbar.hasClassName("leftmenu2")){E.insert({top:A._toolbar.replace(this.toolbarPlaceholder)}) -}A._x_fullScreenActivator.replace(this.closeButton) -}E.insert(this.buttons.replace(this.buttonsPlaceholder).show()); -var B=A.up(); -A._x_fullScreenActivator.hide(); -while(B!=document.body){B._originalStyle={overflow:B.style.overflow,position:B.style.position,width:B.style.width,height:B.style.height,left:B.style.left,right:B.style.right,top:B.style.top,bottom:B.style.bottom,padding:B.style.padding,margin:B.style.margin}; -B.setStyle({overflow:"visible",position:"absolute",width:"100%",height:"100%",left:0,top:0,right:0,bottom:0,padding:0,margin:0}); -B.siblings().each(function(F){F._originalDisplay=F.style.display; -F.setStyle({display:"none"}) +// this is minified code reformatted +if (typeof XWiki == "undefined") { + XWiki = new Object(); +} +if (typeof XWiki.editors == "undefined") { + XWiki.editors = new Object(); +} +XWiki.editors.FullScreenEditing = Class.create({ + margin: 0, + buttonSize: 16, + initialize: function () { + this.buttons = $(document.body).down(".bottombuttons"); + if (!this.buttons) { + this.buttons = new Element("div", { class: "bottombuttons" }).update( + new Element("div", { class: "buttons" }), + ); + this.buttons._x_isCustom = true; + document.body.appendChild(this.buttons.hide()); + } + this.buttonsPlaceholder = new Element("span"); + this.toolbarPlaceholder = new Element("span"); + this.createCloseButtons(); + $$("textarea").each( + function (B) { + this.addBehavior(B); + }.bind(this), + ); + $$(".xRichTextEditor").each( + function (B) { + this.addBehavior(B); + }.bind(this), + ); + this.addWysiwyg20Listener(); + this.maximizedReference = $(document.body).down( + "input[name='x-maximized']", + ); + if (this.maximizedReference && this.maximizedReference.value != "") { + var A = $$(this.maximizedReference.value); + if (A && A.length > 0) { + this.makeFullScreen(A[0]); + } + } + }, + addBehavior: function (A) { + if (this.isWysiwyg20Content(A)) { + this.addWysiwyg20ContentButton(A); + } else { + if (this.isWysiwyg10Content(A)) { + this.addWysiwyg10ContentButton(A); + } else { + if (this.isWikiContent(A)) { + this.addWikiContentButton(A); + } else { + if (this.isWysiwyg20Field(A)) { + this.addWysiwyg20FieldButton(A); + } else { + if (this.isWikiField(A)) { + this.addWikiFieldButton(A); + } else { + if (this.isWysiwyg10Field(A)) { + this.addWysiwyg10FieldButton(A); + } + } + } + } + } + } + }, + addWysiwyg20Listener: function () { + document.observe( + "xwiki:wysiwyg:created", + this.wysiwyg20Created.bindAsEventListener(this), + ); + }, + wysiwyg20Created: function (B, A) {}, + isWikiContent: function (A) { + return A.name == "content" && A.visible(); + }, + isWysiwyg10Content: function (A) { + return ( + A.name == "content" && + (Prototype.Browser.IE + ? A.previous(".mceEditorContainer") + : A.next(".mceEditorContainer")) + ); + }, + isWysiwyg20Content: function (A) { + return ( + A.hasClassName("xRichTextEditor") && A.up("div[id^=content_container]") + ); + }, + isWikiField: function (A) { + return A.visible(); + }, + isWysiwyg10Field: function (A) { + return ( + !A.visible() && + A.name != "content" && + (Prototype.Browser.IE + ? A.previous(".mceEditorContainer") + : A.next(".mceEditorContainer")) + ); + }, + isWysiwyg20Field: function (A) { + return ( + A.hasClassName("xRichTextEditor") && !A.up("div[id^=content_container]") + ); + }, + addWikiContentButton: function (A) { + A._toolbar = $(document.body).down(".leftmenu2"); + if (A._toolbar) { + A._toolbar.insert({ top: this.createOpenButton(A) }); + } else { + this.addWikiFieldButton(A); + } + }, + addWysiwyg10ContentButton: function (E) { + var B = Prototype.Browser.IE + ? E.previous(".mceEditorContainer") + : E.next(".mceEditorContainer"); + if (!B) { + return false; + } + var D = B.down(".mceToolbar"); + if (!D) { + return false; + } + var A = new Element("span", { class: "mce_editor_fullscreentoolbar" }); + var C = new Element("a", { class: "mceButtonNormal" }); + A.insert( + new Element("img", { + class: "mceSeparatorLine", + height: 15, + width: 1, + src: D.down("img.mceSeparatorLine").src, + }), + ); + A.insert(C.insert(this.createOpenButton(B))); + D.insert(A); + B._toolbar = D; + return true; + }, + addWysiwyg20ContentButton: function (B) { + var A = B.down(".gwt-MenuBar"); + if (!A) { + if (!B._x_fullScreenLoader) { + B._x_fullScreenLoader_iterations = 0; + B._x_fullScreenLoader = new PeriodicalExecuter( + function (C) { + if (C._x_fullScreenLoader_iteration > 100) { + C._x_fullScreenLoader.stop(); + C._x_fullScreenLoader = false; + return; + } + C._x_fullScreenLoader_iteration++; + this.addWysiwyg20ContentButton(C); + }.bind(this, B), + 0.2, + ); + } + return false; + } + A.insert({ top: this.createOpenButton(B) }); + B._toolbar = A; + if (B._x_fullScreenLoader) { + B._x_fullScreenLoader.stop(); + B._x_fullScreenLoader = false; + } + return true; + }, + addWikiFieldButton: function (A) { + Element.insert(A, { before: this.createOpenLink(A) }); + }, + addWysiwyg10FieldButton: function (A) { + this.addWysiwyg10ContentButton(A); + }, + addWysiwyg20FieldButton: function (A) { + this.addWysiwyg20ContentButton(A); + }, + createOpenButton: function (B) { + var A = new Element("img", { + class: "fullScreenEditButton", + title: "$msg.get('core.editors.fullscreen.editFullScreen')", + alt: "$msg.get('core.editors.fullscreen.editFullScreen')", + src: "$xwiki.getSkinFile('icons/silk/arrow_out.gif', true)", + }); + A.observe("click", this.makeFullScreen.bind(this, B)); + A.observe("mousedown", this.preventDrag.bindAsEventListener(this)); + B._x_fullScreenActivator = A; + A._x_maximizedElement = B; + return A; + }, + createOpenLink: function (B) { + var C = new Element("div", { class: "fullScreenEditLinkContainer" }); + var A = new Element("a", { + class: "fullScreenEditLink", + title: "$msg.get('core.editors.fullscreen.editFullScreen')", + }); + A.update("${msg.get('core.editors.fullscreen.editFullScreen')} »"); + A.observe("click", this.makeFullScreen.bind(this, B)); + C.update(A); + B._x_fullScreenActivator = A; + A._x_maximizedElement = B; + return C; + }, + createCloseButtons: function () { + this.closeButton = new Element("img", { + class: "fullScreenCloseButton", + title: "$msg.get('core.editors.fullscreen.exitFullScreen')", + alt: "$msg.get('core.editors.fullscreen.exitFullScreen')", + src: "$xwiki.getSkinFile('icons/silk/arrow_in.gif', true)", + }); + this.closeButton.observe("click", this.closeFullScreen.bind(this)); + this.closeButton.observe( + "mousedown", + this.preventDrag.bindAsEventListener(this), + ); + this.closeButton.hide(); + this.actionCloseButton = new Element("input", { + type: "button", + class: "button", + value: "$msg.get('core.editors.fullscreen.exitFullScreen')", + }); + this.actionCloseButtonWrapper = new Element("span", { + class: "buttonwrapper", + }); + this.actionCloseButtonWrapper.update(this.actionCloseButton); + this.actionCloseButton.observe("click", this.closeFullScreen.bind(this)); + this.actionCloseButtonWrapper.hide(); + this.buttons + .down(".buttons") + .insert({ top: this.actionCloseButtonWrapper }); + }, + makeFullScreen: function (A) { + if (this.maximizedReference) { + if (A.id) { + this.maximizedReference.value = A.tagName + "[id='" + A.id + "']"; + } else { + if (A.name) { + this.maximizedReference.value = A.tagName + "[name='" + A.name + "']"; + } else { + if (A.className) { + this.maximizedReference.value = A.tagName + "." + A.className; + } + } + } + } + this.maximized = A; + A._originalStyle = { width: A.style.width, height: A.style.height }; + if (A.hasClassName("xRichTextEditor")) { + var D = A.down(".gwt-RichTextArea"); + D._originalStyle = { width: D.style.width, height: D.style.height }; + } else { + if (A.hasClassName("mceEditorContainer")) { + var D = A.down(".mceEditorIframe"); + D._originalStyle = { width: D.style.width, height: D.style.height }; + var C = A.down(".mceEditorSource"); + C._originalStyle = { width: C.style.width, height: C.style.height }; + } + } + var E = A.up(); + E.addClassName("fullScreenWrapper"); + if (A._toolbar) { + if (A._toolbar.hasClassName("leftmenu2")) { + E.insert({ top: A._toolbar.replace(this.toolbarPlaceholder) }); + } + A._x_fullScreenActivator.replace(this.closeButton); + } + E.insert(this.buttons.replace(this.buttonsPlaceholder).show()); + var B = A.up(); + A._x_fullScreenActivator.hide(); + while (B != document.body) { + B._originalStyle = { + overflow: B.style.overflow, + position: B.style.position, + width: B.style.width, + height: B.style.height, + left: B.style.left, + right: B.style.right, + top: B.style.top, + bottom: B.style.bottom, + padding: B.style.padding, + margin: B.style.margin, + }; + B.setStyle({ + overflow: "visible", + position: "absolute", + width: "100%", + height: "100%", + left: 0, + top: 0, + right: 0, + bottom: 0, + padding: 0, + margin: 0, + }); + B.siblings().each(function (F) { + F._originalDisplay = F.style.display; + F.setStyle({ display: "none" }); + }); + B = B.up(); + } + document.body._originalStyle = { + overflow: B.style.overflow, + width: B.style.width, + height: B.style.height, + }; + document.body.setStyle({ + overflow: "hidden", + width: "100%", + height: "100%", + }); + this.resizeListener = this.resizeTextArea.bind(this, A); + Event.observe(window, "resize", this.resizeListener); + this.closeButton.show(); + this.actionCloseButtonWrapper.show(); + this.resizeTextArea(A); + if (A._toolbar) { + A._toolbar.viewportOffset(); + } + }, + closeFullScreen: function () { + var A = this.maximized; + this.closeButton.hide(); + this.actionCloseButtonWrapper.hide(); + Event.stopObserving(window, "resize", this.resizeListener); + A.up().removeClassName("fullScreenWrapper"); + if (A.hasClassName("xRichTextEditor")) { + var D = A.down(".gwt-RichTextArea"); + D.setStyle(D._originalStyle); + } else { + if (A.hasClassName("mceEditorContainer")) { + var D = A.down(".mceEditorIframe"); + D.setStyle(D._originalStyle); + var C = A.down(".mceEditorSource"); + C.setStyle(C._originalStyle); + } + } + var B = A.up(); + while (B != document.body) { + B.setStyle(B._originalStyle); + B.siblings().each(function (E) { + E.style.display = E._originalDisplay; + }); + B = B.up(); + } + document.body.setStyle(document.body._originalStyle); + this.buttonsPlaceholder.replace(this.buttons); + if (this.buttons._x_isCustom) { + this.buttons.hide(); + } + if (A._toolbar) { + if (A._toolbar.hasClassName("leftmenu2")) { + this.toolbarPlaceholder.replace(A._toolbar); + } + this.closeButton.replace(A._x_fullScreenActivator); + } + if (Prototype.Browser.IE) { + setTimeout( + function () { + A._x_fullScreenActivator.show(); + this.setStyle(this._originalStyle); + }.bind(A), + 500, + ); + } else { + A._x_fullScreenActivator.show(); + A.setStyle(A._originalStyle); + } + delete this.maximized; + if (this.maximizedReference) { + this.maximizedReference.value = ""; + } + }, + resizeTextArea: function (B) { + if (!this.maximized) { + return; + } + var A = document.viewport.getHeight(); + var C = document.viewport.getWidth(); + if (C <= 0) { + C = document.body.clientWidth; + A = document.body.clientHeight; + } + C = C - this.margin; + A = A - B.positionedOffset().top - this.margin - this.buttons.getHeight(); + B.setStyle({ width: C + "px", height: A + "px" }); + if (B.hasClassName("xRichTextEditor")) { + B.down(".gwt-RichTextArea").setStyle({ + width: C + "px", + height: + A - + B.down(".xToolbar").getHeight() - + B.down(".gwt-MenuBar").getHeight() + + "px", + }); + } else { + if (B.hasClassName("mceEditorContainer")) { + B.down(".mceEditorIframe").setStyle({ + width: C + "px", + height: A - B._toolbar.getHeight() + "px", + }); + B.down(".mceEditorSource").setStyle({ + width: C + "px", + height: A - B._toolbar.getHeight() + "px", + }); + } + } + }, + preventDrag: function (A) { + A.stop(); + }, }); -B=B.up() -}document.body._originalStyle={overflow:B.style.overflow,width:B.style.width,height:B.style.height}; -document.body.setStyle({overflow:"hidden",width:"100%",height:"100%"}); -this.resizeListener=this.resizeTextArea.bind(this,A); -Event.observe(window,"resize",this.resizeListener); -this.closeButton.show(); -this.actionCloseButtonWrapper.show(); -this.resizeTextArea(A); -if(A._toolbar){A._toolbar.viewportOffset() -}},closeFullScreen:function(){var A=this.maximized; -this.closeButton.hide(); -this.actionCloseButtonWrapper.hide(); -Event.stopObserving(window,"resize",this.resizeListener); -A.up().removeClassName("fullScreenWrapper"); -if(A.hasClassName("xRichTextEditor")){var D=A.down(".gwt-RichTextArea"); -D.setStyle(D._originalStyle) -}else{if(A.hasClassName("mceEditorContainer")){var D=A.down(".mceEditorIframe"); -D.setStyle(D._originalStyle); -var C=A.down(".mceEditorSource"); -C.setStyle(C._originalStyle) -}}var B=A.up(); -while(B!=document.body){B.setStyle(B._originalStyle); -B.siblings().each(function(E){E.style.display=E._originalDisplay +Event.observe(window, "load", function () { + if (Prototype.Browser.IE) { + setTimeout("new XWiki.editors.FullScreenEditing();", 500); + } else { + new XWiki.editors.FullScreenEditing(); + } }); -B=B.up() -}document.body.setStyle(document.body._originalStyle); -this.buttonsPlaceholder.replace(this.buttons); -if(this.buttons._x_isCustom){this.buttons.hide() -}if(A._toolbar){if(A._toolbar.hasClassName("leftmenu2")){this.toolbarPlaceholder.replace(A._toolbar) -}this.closeButton.replace(A._x_fullScreenActivator) -}if(Prototype.Browser.IE){setTimeout(function(){A._x_fullScreenActivator.show(); -this.setStyle(this._originalStyle) -}.bind(A),500) -}else{A._x_fullScreenActivator.show(); -A.setStyle(A._originalStyle) -}delete this.maximized; -if(this.maximizedReference){this.maximizedReference.value="" -}},resizeTextArea:function(B){if(!this.maximized){return -}var A=document.viewport.getHeight(); -var C=document.viewport.getWidth(); -if(C<=0){C=document.body.clientWidth; -A=document.body.clientHeight -}C=C-this.margin; -A=A-B.positionedOffset().top-this.margin-this.buttons.getHeight(); -B.setStyle({width:C+"px",height:A+"px"}); -if(B.hasClassName("xRichTextEditor")){B.down(".gwt-RichTextArea").setStyle({width:C+"px",height:A-B.down(".xToolbar").getHeight()-B.down(".gwt-MenuBar").getHeight()+"px"}) -}else{if(B.hasClassName("mceEditorContainer")){B.down(".mceEditorIframe").setStyle({width:C+"px",height:A-B._toolbar.getHeight()+"px"}); -B.down(".mceEditorSource").setStyle({width:C+"px",height:A-B._toolbar.getHeight()+"px"}) -}}},preventDrag:function(A){A.stop() -}}); -Event.observe(window,"load",function(){if(Prototype.Browser.IE){setTimeout("new XWiki.editors.FullScreenEditing();",500) -}else{new XWiki.editors.FullScreenEditing() -}}); \ No newline at end of file diff --git a/src/main/webapp/resources/js/xwiki/xwikiexplorer/xwikiexplorer.js b/src/main/webapp/resources/js/xwiki/xwikiexplorer/xwikiexplorer.js index 9ae5da86a..d1c415742 100644 --- a/src/main/webapp/resources/js/xwiki/xwikiexplorer/xwikiexplorer.js +++ b/src/main/webapp/resources/js/xwiki/xwikiexplorer/xwikiexplorer.js @@ -1,250 +1,780 @@ -if(typeof XWiki=="undefined"){alert("ERROR: xwikiexplorer.js depends on xwiki.js") -}XWiki.constants.rest={baseRestURI:XWiki.contextPath+"/rest/",restChildrenRel:"http://www.xwiki.org/rel/children",restParentRel:"http://www.xwiki.org/rel/parent",restAttachmentsRel:"http://www.xwiki.org/rel/attachments",restHomeRel:"http://www.xwiki.org/rel/home"}; -isc.ClassFactory.defineClass("XWEResultTree",isc.ResultTree); -isc.XWEResultTree.addClassProperties({constants:{addNodeSuffix:"..new",attachmentsTitle:"$msg.get('xwikiexplorer.attachments.title')",addPageTitle:"$msg.get('xwikiexplorer.addpage.title')",addAttachmentTitle:"$msg.get('xwikiexplorer.addattachment.title')"}}); -isc.XWEResultTree.addProperties({multiDSTree:true,callbacks:{dataArrived:new Array()},parentMap:{},displayLinks:true,displayAddPage:false,displayAddPageOnTop:true,displayAttachments:true,displayAttachmentsOnTop:false,displayAttachmentsWhenEmpty:false,displayAddAttachment:false,displayAddAttachmentOnTop:true,displayBlacklistedSpaces:false}); -isc.XWEResultTree.addMethods({getChildDataSource:function(E,D){var C=E[this.childTypeProperty]; -if(C!=null){return isc.DS.get(C) -}var D=D||this.getNodeDataSource(E); -if(D==null||!this.isMultiDSTree()){return this.getRootDataSource() -}var B=this.treeRelations,A=D.getChildDataSources(); -var F=XWiki.resource.get(E.id); -E.resource=F; -if(D.Class=="XWEDataSource"){C=isc.XWEWikiDataSource.getOrCreate(F.wiki).getID() -}else{if(D.Class=="XWEWikiDataSource"){C=isc.XWESpaceDataSource.getOrCreate(F.wiki,F.space).getID() -}else{if(D.Class=="XWESpaceDataSource"){if(E.isXWikiAttachment==null){C=isc.XWESpaceDataSource.getOrCreate(F.wiki,F.space).getID() -}else{C=isc.XWEAttachmentsDataSource.getOrCreate(F.wiki,F.space,F.name).getID() -}}else{if(B){C=B[D.ID] -}}}}if(C!=null){return isc.DS.get(C) -}if(A!=null){return A[0] -}},dataArrived:function(E){var I=this.getNodeDataSource(E); -var C=""; -if(I==null){I=this.getDataSource() -}if(I.Class=="XWEWikiDataSource"&&this.displayBlacklistedSpaces==false){this.filterNodesByName(this.getChildren(),XWiki.blacklistedSpaces) -}var B=this.getChildren(E); -for(var D=0; -D"+G+"" -}isc.addProperties(B[D],{icon:A.icon,title:G,isNewPage:false,isNewAttachment:false}); -if(D==0){C=A.Class -}}if(C=="XWESpaceDataSource"&&I.Class=="XWEWikiDataSource"&&this.displayAddPage==true){this.addAddPageNode(E) -}if(I.Class=="XWESpaceDataSource"&&this.displayAttachments==true&&!E.isXWikiAttachment){this.addAttachmentsNode(E) -}if(E.isXWikiAttachment&&this.displayAddAttachment==true){this.addAddAttachmentsNode(E) -}if(this.callbacks.dataArrived.length>0){var H=this.callbacks.dataArrived.shift(); -H.callback() -}},isFolder:function(D){var C=this.getNodeDataSource(D); -if(C!=null){if(C.Class=="XWEDataSource"){return true -}else{if(C.Class=="XWEWikiDataSource"){return true -}else{if(C.Class=="XWESpaceDataSource"){if(D.isXWikiAttachment==true){return true -}var A=(D.link!=null)?D.link:new Array(); -for(var B=0; -B"+H+"" -}var A={id:G.id+XWiki.constants.anchorSeparator+XWiki.constants.docextraAttachmentsAnchor,fullName:G.fullName+XWiki.constants.anchorSeparator+XWiki.constants.docextraAttachmentsAnchor,wiki:G.wiki,space:G.space,title:H,name:G.name,parentId:G.id,xwikiRelativeURL:G.xwikiRelativeURL+XWiki.constants.anchorSeparator+XWiki.constants.docextraAttachmentsAnchor,icon:"$xwiki.getSkinFile('icons/silk/page_white_zip.gif', true)",resource:XWiki.resource.get(G.id+XWiki.constants.anchorSeparator+XWiki.constants.docextraAttachmentsAnchor),isXWikiAttachment:true,isNewPage:false,isNewAttachment:false}; -var C; -if(this.displayAttachmentsOnTop==true){C=0 -}else{C=null -}this.add(A,G,C) -}}}); -isc.ClassFactory.defineClass("XWEDataSource",isc.DataSource); -isc.XWEDataSource.addClassProperties({sep:"_"}); -isc.XWEDataSource.addProperties({dataFormat:"xml",xmlNamespaces:{xwiki:"http://www.xwiki.org"},resultTreeClass:"XWEResultTree",transformResponse:function(B,A,D){if(this.callbacks.transformResponse.length>0){var C=this.callbacks.transformResponse.shift(); -C.callback(B,A,D) -}return B -},dataURL:XWiki.constants.rest.baseRestURI+"wikis/",recordXPath:"/xwiki:wikis/xwiki:wiki",fields:[{name:"id",required:true,type:"text",primaryKey:true},{name:"name",type:"text"},{name:"title",type:"text"},{name:"xwikiRelativeUrl",type:"text"}],icon:"$xwiki.getSkinFile('icons/silk/database.gif', true)",requestProperties:{promptStyle:"cursor"},callbacks:{transformResponse:new Array()}}); -isc.XWEDataSource.addMethods({transformRequest:function(A){if(A.originalData){A.originalData.r=""+Math.floor(Math.random()*1000000) -}return A.data -}}); -isc.ClassFactory.defineClass("XWEWikiDataSource",isc.XWEDataSource); -isc.XWEWikiDataSource.addClassMethods({getOrCreate:function(A){var C="XWEWikiDataSource_"+A; -var B=this.get(C); -if(B==null){B=this.create({ID:C,wiki:A}) -}return B -}}); -isc.XWEWikiDataSource.addProperties({wiki:XWiki.currentWiki,recordXPath:"/xwiki:spaces/xwiki:space",fields:[{name:"id",required:true,type:"text",primaryKey:true},{name:"name",required:true,type:"text"},{name:"title",type:"text"},{name:"xwikiRelativeUrl",type:"text"}],icon:"$xwiki.getSkinFile('icons/silk/folder.gif', true)"}); -isc.XWEWikiDataSource.addMethods({init:function(){this.dataURL=XWiki.constants.rest.baseRestURI+"wikis/"+this.wiki+"/spaces"; -this.Super("init",arguments) -}}); -isc.ClassFactory.defineClass("XWESpaceDataSource",isc.XWEDataSource); -isc.XWESpaceDataSource.addClassMethods({getOrCreate:function(A,C){var D="XWESpaceDataSource_"+A+isc.XWEDataSource.sep+C; -var B=this.get(D); -if(B==null){B=this.create({ID:D,wiki:A,space:C}) -}return B -}}); -isc.XWESpaceDataSource.addProperties({wiki:"xwiki",space:"Main",recordXPath:"/xwiki:pages/xwiki:pageSummary",fields:[{name:"id",required:true,type:"text",primaryKey:true},{name:"fullName",required:true,type:"text"},{name:"wiki",required:true,type:"text"},{name:"space",required:true,type:"text"},{name:"name",required:true,type:"text"},{name:"title",required:true,type:"text"},{name:"parentId",required:true,type:"text",foreignKey:"id"},{name:"parent",required:true,type:"text"},{name:"xwikiRelativeUrl",type:"text"},{name:"link",propertiesOnly:true}],icon:"$xwiki.getSkinFile('icons/silk/page_white_text.gif', true)"}); -isc.XWESpaceDataSource.addMethods({init:function(){this.dataURL=XWiki.constants.rest.baseRestURI+"wikis/"+this.wiki+"/spaces/"+this.space+"/pages"; -this.transformRequest=function(A){var B=this.wiki+XWiki.constants.wikiSpaceSeparator+this.space; -if(A.originalData.parentId==B||A.originalData.parentId==null){A.originalData.parentId="^(?!"+B+".).*$" -}return this.Super("transformRequest",arguments) -}; -this.Super("init",arguments) -}}); -isc.ClassFactory.defineClass("XWEPageDataSource",isc.XWEDataSource); -isc.XWEPageDataSource.addClassMethods({getOrCreate:function(A,D,C){var E="XWEPageDataSource_"+A+isc.XWEDataSource.sep+D+isc.XWEDataSource.sep+C; -var B=this.get(E); -if(B==null){B=this.create({ID:E,wiki:A,space:D,page:C}) -}return B -}}); -isc.XWEPageDataSource.addProperties({wiki:"xwiki",space:"Main",page:"WebHome",recordXPath:"/xwiki:page",fields:[{name:"id",required:true,type:"text",primaryKey:true},{name:"wiki",required:true,type:"text"},{name:"space",required:true,type:"text"},{name:"name",required:true,type:"text"},{name:"parentId",required:true,type:"text"},{name:"parent",required:true,type:"text"},{name:"link",propertiesOnly:true}],icon:"$xwiki.getSkinFile('icons/silk/page_white_text.gif', true)"}); -isc.XWEPageDataSource.addMethods({init:function(){this.dataURL=XWiki.constants.rest.baseRestURI+"wikis/"+this.wiki+"/spaces/"+this.space+"/pages/"+this.page; -this.Super("init",arguments) -}}); -isc.ClassFactory.defineClass("XWEAttachmentsDataSource",isc.XWEDataSource); -isc.XWEAttachmentsDataSource.addClassMethods({getOrCreate:function(A,D,C){var E="XWEAttachmentsDataSource_"+A+isc.XWEDataSource.sep+D+isc.XWEDataSource.sep+C; -var B=this.get(E); -if(B==null){B=this.create({ID:E,wiki:A,space:D,page:C}) -}return B -}}); -isc.XWEAttachmentsDataSource.addProperties({wiki:"xwiki",space:"Main",page:"WebHome",recordXPath:"/xwiki:attachments/xwiki:attachment",fields:[{name:"id",required:true,type:"text",primaryKey:true},{name:"name",required:true,type:"text"},{name:"title",type:"text"},{name:"xwikiRelativeUrl",type:"text"}],icon:"$xwiki.getSkinFile('icons/silk/attach.gif', true)"}); -isc.XWEAttachmentsDataSource.addMethods({init:function(){this.dataURL=XWiki.constants.rest.baseRestURI+"wikis/"+this.wiki+"/spaces/"+this.space+"/pages/"+this.page+"/attachments"; -this.Super("init",arguments) -}}); -isc.ClassFactory.defineClass("XWETreeGrid",isc.TreeGrid); -isc.XWETreeGrid.addProperties({autoDraw:false,autoFetchData:true,nodeClick:function(C,A,B){this.nodeClickCallback(C,A,B) -},showHeader:false,folderIcon:"$xwiki.getSkinFile('icons/silk/database.gif', true)",position:"relative",dropIconSuffix:"",openIconSuffix:"",closedIconSuffix:"",animateFolders:false,wiki:XWiki.currentWiki,space:null,displaySuggest:true,defaultValue:"Main.WebHome",inputValueCache:""}); -isc.XWETreeGrid.addMethods({draw:function(){if(this.Super("draw",arguments)!=null){return this -}if(typeof this.input=="undefined"&&this.input==null){this.drawInput() -}for(member in this){if(typeof member!="function"&&member.startsWith("display")){this.data[member]=this[member] -}}var A="div.listGrid td, div.listGrid table {margin:0;padding:0;} div.listGrid td {border:0;color:#333;} #actionmenu {z-index: 999999;}"; -var C=document.getElementsByTagName("head")[0]; -var B=document.createElement("style"); -B.type="text/css"; -B.media="screen"; -if(B.styleSheet){B.styleSheet.cssText=A -}else{B.appendChild(document.createTextNode(A)) -}C.appendChild(B) -},invalidateCache:function(){this.Super("invalidateCache",arguments); -this.inputValueCache="" -},openNode:function(A,E,B){var D={treeId:this.getID(),callback:function(){window[this.treeId].openNodesFromInput() -}}; -var C=A.findById(E); -if(C!=null){if(A.isFolder(C)&&!A.isOpen(C)){if(B==true){this.getData().callbacks.dataArrived.push(D) -}A.openFolder(C); -return null -}this.selectNodeAndScroll(C); -return C -}return null -},selectNodeAndScroll:function(A){this.deselectAllRecords(); -this.selectRecord(A); -nodeYPos=this.getFocusRow()*this.getRowHeight(); -this.body.scrollTo(this.body.getScrollLeft(),nodeYPos) -},openParent:function(A,D){if(D.name!=""){if(A.parentMap[D.prefixedFullName]==null){var E=isc.XWEPageDataSource.getOrCreate(D.wiki,D.space,D.name); -var C=function(J,I,L,H){if(J.httpResponseCode==200){var G=XWiki.resource.get(J.data[0].parent); -var F=A.findById(G.fullName); -A.parentMap[D.prefixedFullName]=G; -if(A.findById(G.prefixedFullName)!=null){this.openNode(A,G.prefixedFullName,true) -}else{this.openParent(A,G) -}}else{if(this.displayAddPage==true){var K=this.getData().findById(D.prefixedSpace+isc.XWEResultTree.constants.addNodeSuffix); -K.resource=D; -this.selectNodeAndScroll(K) -}}}.bind(this); -E.fetchData(null,C,null) -}else{var B=A.parentMap[D.prefixedFullName]; -if(A.findById(B.prefixedFullName)!=null){this.openNode(A,B.prefixedFullName,true) -}else{this.openParent(A,B) -}}}},openNodesFromInput:function(){var I=this.getDataSource().Class; -var D=XWiki.resource.get(this.input.value); -var B=XWiki.resource.get(""); -var E=this.getData(); -if(this.getSelectedRecord()!=null){B=this.getSelectedRecord().resource -}if(I=="XWEDataSource"){var J=this.openNode(E,D.wiki,true); -if(J==null){return -}}if(I=="XWEDataSource"||I=="XWEWikiDataSource"){if(D.space!=B.space){this.deselectRecord(this.getSelectedRecord()) -}var F=this.openNode(E,D.prefixedSpace,true); -if(F==null){return -}}var K=this.openNode(E,D.prefixedFullName,true); -if(K==null){this.openParent(E,D) -}if(B.attachment!=D.attachment||(B.anchor!=D.anchor&&D.anchor==XWiki.constants.docextraAttachmentsAnchor)){var C=D.prefixedFullName+XWiki.constants.anchorSeparator+XWiki.constants.docextraAttachmentsAnchor; -var A=this.openNode(E,C,true); -if(A==null){return -}var G=D.prefixedFullName+XWiki.constants.pageAttachmentSeparator+D.attachment; -var H=this.openNode(E,G,false) -}return -},inputObserver:function(){var A=this.input.value; -if(A!=""&&A!=this.inputValueCache){this.openNodesFromInput(); -this.inputValueCache=A -}setTimeout(this.inputObserver.bind(this),2000) -},drawInput:function(){var D=(this.displaySuggest==false)?"hidden":"text"; -var A=this.width-6; -var B=document.createElement("input"); -B.setAttribute("id",this.getID()+"_Input"); -B.setAttribute("name",this.getID()+"_Input"); -B.setAttribute("style","width:"+A+"px;clear:both"); -B.setAttribute("type",D); -if(this.defaultValue){B.setAttribute("value",this.defaultValue) -}this.htmlElement.appendChild(B); -this.input=B; -if(this.displaySuggest){var C=function(){var F=new ajaxSuggest(this,{script:"/xwiki/rest/wikis/"+XWiki.currentWiki+"/search?scope=name&",varname:"q"}); -F.setSuggestions=function(K){this.aSuggestions=[]; -var H=K.responseXML; -var J=H.getElementsByTagName("searchResult"); -for(var I=0; -I" + G + ""; + } + isc.addProperties(B[D], { + icon: A.icon, + title: G, + isNewPage: false, + isNewAttachment: false, + }); + if (D == 0) { + C = A.Class; + } + } + if ( + C == "XWESpaceDataSource" && + I.Class == "XWEWikiDataSource" && + this.displayAddPage == true + ) { + this.addAddPageNode(E); + } + if ( + I.Class == "XWESpaceDataSource" && + this.displayAttachments == true && + !E.isXWikiAttachment + ) { + this.addAttachmentsNode(E); + } + if (E.isXWikiAttachment && this.displayAddAttachment == true) { + this.addAddAttachmentsNode(E); + } + if (this.callbacks.dataArrived.length > 0) { + var H = this.callbacks.dataArrived.shift(); + H.callback(); + } + }, + isFolder: function (D) { + var C = this.getNodeDataSource(D); + if (C != null) { + if (C.Class == "XWEDataSource") { + return true; + } else { + if (C.Class == "XWEWikiDataSource") { + return true; + } else { + if (C.Class == "XWESpaceDataSource") { + if (D.isXWikiAttachment == true) { + return true; + } + var A = D.link != null ? D.link : new Array(); + for (var B = 0; B < A.length; B++) { + if ( + A[B].rel == XWiki.constants.rest.restChildrenRel || + A[B].rel == XWiki.constants.rest.restAttachmentsRel || + this.displayAttachmentsWhenEmpty || + this.displayAddAttachment + ) { + return true; + } + } + return false; + } else { + if (C.Class == "XWEAttachmentsDataSource") { + return false; + } + } + } + } + } + return true; + }, + getChildNodeByName: function (D, A) { + var C = this.getChildren(D); + if (C != null) { + for (var B = 0; B < C.length; B++) { + if (C[B].name == A) { + return C[B]; + } + } + } + return null; + }, + filterNodesByName: function (A, C) { + for (var B = 0; B < A.length; B++) { + if (XWiki.blacklistedSpaces.indexOf(A[B].name) != -1) { + this.remove(A[B]); + } + } + }, + addAddPageNode: function (C) { + var B = { + id: C.id + isc.XWEResultTree.constants.addNodeSuffix, + wiki: C.wiki, + space: C.space, + title: isc.XWEResultTree.constants.addPageTitle, + parentId: C.id, + icon: "$xwiki.getSkinFile('icons/silk/bullet_add.gif', true)", + resource: C.resource, + isNewPage: true, + isNewAttachment: false, + clickCallback: function (F, D, E) { + D.resource = XWiki.resource.get(D.resource.prefixedSpace); + F.input.value = ""; + }, + }; + var A; + if (this.displayAddPageOnTop == true) { + A = 0; + } else { + A = null; + } + this.add(B, C, A); + }, + addAddAttachmentsNode: function (C) { + var B = { + id: C.id + isc.XWEResultTree.constants.addNodeSuffix, + wiki: C.wiki, + space: C.space, + title: isc.XWEResultTree.constants.addAttachmentTitle, + parentId: C.id, + icon: "$xwiki.getSkinFile('icons/silk/bullet_add.gif', true)", + resource: C.resource, + isNewPage: false, + isNewAttachment: true, + clickCallback: function (F, D, E) { + F.input.value = ""; + }, + }; + var A; + if (this.displayAddAttachmentsOnTop == true) { + A = 0; + } else { + A = null; + } + this.add(B, C, A); + }, + addAttachmentsNode: function (G) { + var D = false; + var F = this.getNodeDataSource(G); + if (this.displayAttachmentsWhenEmpty == true || this.displayAddAttachment) { + D = true; + } else { + var B = G.link != null ? G.link : new Array(); + var D = false; + for (var E = 0; E < B.length; E++) { + if (B[E].rel == XWiki.constants.rest.restAttachmentsRel) { + D = true; + break; + } + } + } + if (D == true) { + var H = + isc.XWEResultTree.constants.attachmentsTitle + " (" + G.name + ")"; + if (this.displayLinks == true) { + H = + "" + + H + + ""; + } + var A = { + id: + G.id + + XWiki.constants.anchorSeparator + + XWiki.constants.docextraAttachmentsAnchor, + fullName: + G.fullName + + XWiki.constants.anchorSeparator + + XWiki.constants.docextraAttachmentsAnchor, + wiki: G.wiki, + space: G.space, + title: H, + name: G.name, + parentId: G.id, + xwikiRelativeURL: + G.xwikiRelativeURL + + XWiki.constants.anchorSeparator + + XWiki.constants.docextraAttachmentsAnchor, + icon: "$xwiki.getSkinFile('icons/silk/page_white_zip.gif', true)", + resource: XWiki.resource.get( + G.id + + XWiki.constants.anchorSeparator + + XWiki.constants.docextraAttachmentsAnchor, + ), + isXWikiAttachment: true, + isNewPage: false, + isNewAttachment: false, + }; + var C; + if (this.displayAttachmentsOnTop == true) { + C = 0; + } else { + C = null; + } + this.add(A, G, C); + } + }, +}); +isc.ClassFactory.defineClass("XWEDataSource", isc.DataSource); +isc.XWEDataSource.addClassProperties({ sep: "_" }); +isc.XWEDataSource.addProperties({ + dataFormat: "xml", + xmlNamespaces: { xwiki: "http://www.xwiki.org" }, + resultTreeClass: "XWEResultTree", + transformResponse: function (B, A, D) { + if (this.callbacks.transformResponse.length > 0) { + var C = this.callbacks.transformResponse.shift(); + C.callback(B, A, D); + } + return B; + }, + dataURL: XWiki.constants.rest.baseRestURI + "wikis/", + recordXPath: "/xwiki:wikis/xwiki:wiki", + fields: [ + { name: "id", required: true, type: "text", primaryKey: true }, + { name: "name", type: "text" }, + { name: "title", type: "text" }, + { name: "xwikiRelativeUrl", type: "text" }, + ], + icon: "$xwiki.getSkinFile('icons/silk/database.gif', true)", + requestProperties: { promptStyle: "cursor" }, + callbacks: { transformResponse: new Array() }, +}); +isc.XWEDataSource.addMethods({ + transformRequest: function (A) { + if (A.originalData) { + A.originalData.r = "" + Math.floor(Math.random() * 1000000); + } + return A.data; + }, +}); +isc.ClassFactory.defineClass("XWEWikiDataSource", isc.XWEDataSource); +isc.XWEWikiDataSource.addClassMethods({ + getOrCreate: function (A) { + var C = "XWEWikiDataSource_" + A; + var B = this.get(C); + if (B == null) { + B = this.create({ ID: C, wiki: A }); + } + return B; + }, +}); +isc.XWEWikiDataSource.addProperties({ + wiki: XWiki.currentWiki, + recordXPath: "/xwiki:spaces/xwiki:space", + fields: [ + { name: "id", required: true, type: "text", primaryKey: true }, + { name: "name", required: true, type: "text" }, + { name: "title", type: "text" }, + { name: "xwikiRelativeUrl", type: "text" }, + ], + icon: "$xwiki.getSkinFile('icons/silk/folder.gif', true)", +}); +isc.XWEWikiDataSource.addMethods({ + init: function () { + this.dataURL = + XWiki.constants.rest.baseRestURI + "wikis/" + this.wiki + "/spaces"; + this.Super("init", arguments); + }, +}); +isc.ClassFactory.defineClass("XWESpaceDataSource", isc.XWEDataSource); +isc.XWESpaceDataSource.addClassMethods({ + getOrCreate: function (A, C) { + var D = "XWESpaceDataSource_" + A + isc.XWEDataSource.sep + C; + var B = this.get(D); + if (B == null) { + B = this.create({ ID: D, wiki: A, space: C }); + } + return B; + }, +}); +isc.XWESpaceDataSource.addProperties({ + wiki: "xwiki", + space: "Main", + recordXPath: "/xwiki:pages/xwiki:pageSummary", + fields: [ + { name: "id", required: true, type: "text", primaryKey: true }, + { name: "fullName", required: true, type: "text" }, + { name: "wiki", required: true, type: "text" }, + { name: "space", required: true, type: "text" }, + { name: "name", required: true, type: "text" }, + { name: "title", required: true, type: "text" }, + { name: "parentId", required: true, type: "text", foreignKey: "id" }, + { name: "parent", required: true, type: "text" }, + { name: "xwikiRelativeUrl", type: "text" }, + { name: "link", propertiesOnly: true }, + ], + icon: "$xwiki.getSkinFile('icons/silk/page_white_text.gif', true)", +}); +isc.XWESpaceDataSource.addMethods({ + init: function () { + this.dataURL = + XWiki.constants.rest.baseRestURI + + "wikis/" + + this.wiki + + "/spaces/" + + this.space + + "/pages"; + this.transformRequest = function (A) { + var B = this.wiki + XWiki.constants.wikiSpaceSeparator + this.space; + if (A.originalData.parentId == B || A.originalData.parentId == null) { + A.originalData.parentId = "^(?!" + B + ".).*$"; + } + return this.Super("transformRequest", arguments); + }; + this.Super("init", arguments); + }, +}); +isc.ClassFactory.defineClass("XWEPageDataSource", isc.XWEDataSource); +isc.XWEPageDataSource.addClassMethods({ + getOrCreate: function (A, D, C) { + var E = + "XWEPageDataSource_" + + A + + isc.XWEDataSource.sep + + D + + isc.XWEDataSource.sep + + C; + var B = this.get(E); + if (B == null) { + B = this.create({ ID: E, wiki: A, space: D, page: C }); + } + return B; + }, +}); +isc.XWEPageDataSource.addProperties({ + wiki: "xwiki", + space: "Main", + page: "WebHome", + recordXPath: "/xwiki:page", + fields: [ + { name: "id", required: true, type: "text", primaryKey: true }, + { name: "wiki", required: true, type: "text" }, + { name: "space", required: true, type: "text" }, + { name: "name", required: true, type: "text" }, + { name: "parentId", required: true, type: "text" }, + { name: "parent", required: true, type: "text" }, + { name: "link", propertiesOnly: true }, + ], + icon: "$xwiki.getSkinFile('icons/silk/page_white_text.gif', true)", +}); +isc.XWEPageDataSource.addMethods({ + init: function () { + this.dataURL = + XWiki.constants.rest.baseRestURI + + "wikis/" + + this.wiki + + "/spaces/" + + this.space + + "/pages/" + + this.page; + this.Super("init", arguments); + }, +}); +isc.ClassFactory.defineClass("XWEAttachmentsDataSource", isc.XWEDataSource); +isc.XWEAttachmentsDataSource.addClassMethods({ + getOrCreate: function (A, D, C) { + var E = + "XWEAttachmentsDataSource_" + + A + + isc.XWEDataSource.sep + + D + + isc.XWEDataSource.sep + + C; + var B = this.get(E); + if (B == null) { + B = this.create({ ID: E, wiki: A, space: D, page: C }); + } + return B; + }, +}); +isc.XWEAttachmentsDataSource.addProperties({ + wiki: "xwiki", + space: "Main", + page: "WebHome", + recordXPath: "/xwiki:attachments/xwiki:attachment", + fields: [ + { name: "id", required: true, type: "text", primaryKey: true }, + { name: "name", required: true, type: "text" }, + { name: "title", type: "text" }, + { name: "xwikiRelativeUrl", type: "text" }, + ], + icon: "$xwiki.getSkinFile('icons/silk/attach.gif', true)", +}); +isc.XWEAttachmentsDataSource.addMethods({ + init: function () { + this.dataURL = + XWiki.constants.rest.baseRestURI + + "wikis/" + + this.wiki + + "/spaces/" + + this.space + + "/pages/" + + this.page + + "/attachments"; + this.Super("init", arguments); + }, +}); +isc.ClassFactory.defineClass("XWETreeGrid", isc.TreeGrid); +isc.XWETreeGrid.addProperties({ + autoDraw: false, + autoFetchData: true, + nodeClick: function (C, A, B) { + this.nodeClickCallback(C, A, B); + }, + showHeader: false, + folderIcon: "$xwiki.getSkinFile('icons/silk/database.gif', true)", + position: "relative", + dropIconSuffix: "", + openIconSuffix: "", + closedIconSuffix: "", + animateFolders: false, + wiki: XWiki.currentWiki, + space: null, + displaySuggest: true, + defaultValue: "Main.WebHome", + inputValueCache: "", +}); +isc.XWETreeGrid.addMethods({ + draw: function () { + if (this.Super("draw", arguments) != null) { + return this; + } + if (typeof this.input == "undefined" && this.input == null) { + this.drawInput(); + } + for (member in this) { + if (typeof member != "function" && member.startsWith("display")) { + this.data[member] = this[member]; + } + } + var A = + "div.listGrid td, div.listGrid table {margin:0;padding:0;} div.listGrid td {border:0;color:#333;} #actionmenu {z-index: 999999;}"; + var C = document.getElementsByTagName("head")[0]; + var B = document.createElement("style"); + B.type = "text/css"; + B.media = "screen"; + if (B.styleSheet) { + B.styleSheet.cssText = A; + } else { + B.appendChild(document.createTextNode(A)); + } + C.appendChild(B); + }, + invalidateCache: function () { + this.Super("invalidateCache", arguments); + this.inputValueCache = ""; + }, + openNode: function (A, E, B) { + var D = { + treeId: this.getID(), + callback: function () { + window[this.treeId].openNodesFromInput(); + }, + }; + var C = A.findById(E); + if (C != null) { + if (A.isFolder(C) && !A.isOpen(C)) { + if (B == true) { + this.getData().callbacks.dataArrived.push(D); + } + A.openFolder(C); + return null; + } + this.selectNodeAndScroll(C); + return C; + } + return null; + }, + selectNodeAndScroll: function (A) { + this.deselectAllRecords(); + this.selectRecord(A); + nodeYPos = this.getFocusRow() * this.getRowHeight(); + this.body.scrollTo(this.body.getScrollLeft(), nodeYPos); + }, + openParent: function (A, D) { + if (D.name != "") { + if (A.parentMap[D.prefixedFullName] == null) { + var E = isc.XWEPageDataSource.getOrCreate(D.wiki, D.space, D.name); + var C = function (J, I, L, H) { + if (J.httpResponseCode == 200) { + var G = XWiki.resource.get(J.data[0].parent); + var F = A.findById(G.fullName); + A.parentMap[D.prefixedFullName] = G; + if (A.findById(G.prefixedFullName) != null) { + this.openNode(A, G.prefixedFullName, true); + } else { + this.openParent(A, G); + } + } else { + if (this.displayAddPage == true) { + var K = this.getData().findById( + D.prefixedSpace + isc.XWEResultTree.constants.addNodeSuffix, + ); + K.resource = D; + this.selectNodeAndScroll(K); + } + } + }.bind(this); + E.fetchData(null, C, null); + } else { + var B = A.parentMap[D.prefixedFullName]; + if (A.findById(B.prefixedFullName) != null) { + this.openNode(A, B.prefixedFullName, true); + } else { + this.openParent(A, B); + } + } + } + }, + openNodesFromInput: function () { + var I = this.getDataSource().Class; + var D = XWiki.resource.get(this.input.value); + var B = XWiki.resource.get(""); + var E = this.getData(); + if (this.getSelectedRecord() != null) { + B = this.getSelectedRecord().resource; + } + if (I == "XWEDataSource") { + var J = this.openNode(E, D.wiki, true); + if (J == null) { + return; + } + } + if (I == "XWEDataSource" || I == "XWEWikiDataSource") { + if (D.space != B.space) { + this.deselectRecord(this.getSelectedRecord()); + } + var F = this.openNode(E, D.prefixedSpace, true); + if (F == null) { + return; + } + } + var K = this.openNode(E, D.prefixedFullName, true); + if (K == null) { + this.openParent(E, D); + } + if ( + B.attachment != D.attachment || + (B.anchor != D.anchor && + D.anchor == XWiki.constants.docextraAttachmentsAnchor) + ) { + var C = + D.prefixedFullName + + XWiki.constants.anchorSeparator + + XWiki.constants.docextraAttachmentsAnchor; + var A = this.openNode(E, C, true); + if (A == null) { + return; + } + var G = + D.prefixedFullName + + XWiki.constants.pageAttachmentSeparator + + D.attachment; + var H = this.openNode(E, G, false); + } + return; + }, + inputObserver: function () { + var A = this.input.value; + if (A != "" && A != this.inputValueCache) { + this.openNodesFromInput(); + this.inputValueCache = A; + } + setTimeout(this.inputObserver.bind(this), 2000); + }, + drawInput: function () { + var D = this.displaySuggest == false ? "hidden" : "text"; + var A = this.width - 6; + var B = document.createElement("input"); + B.setAttribute("id", this.getID() + "_Input"); + B.setAttribute("name", this.getID() + "_Input"); + B.setAttribute("style", "width:" + A + "px;clear:both"); + B.setAttribute("type", D); + if (this.defaultValue) { + B.setAttribute("value", this.defaultValue); + } + this.htmlElement.appendChild(B); + this.input = B; + if (this.displaySuggest) { + var C = function () { + var F = new ajaxSuggest(this, { + script: + "/xwiki/rest/wikis/" + XWiki.currentWiki + "/search?scope=name&", + varname: "q", + }); + F.setSuggestions = function (K) { + this.aSuggestions = []; + var H = K.responseXML; + var J = H.getElementsByTagName("searchResult"); + for (var I = 0; I < J.length; I++) { + var M = J[I].getElementsByTagName("id")[0].firstChild.nodeValue; + var L = J[I].getElementsByTagName("space")[0].firstChild.nodeValue; + var G = + J[I].getElementsByTagName("pageName")[0].firstChild.nodeValue; + if (J[I].hasChildNodes()) { + this.aSuggestions.push({ + id: M, + value: L + XWiki.constants.spacePageSeparator + G, + info: "", + }); + } + } + this.idAs = "as_" + this.fld.id; + this.createList(this.aSuggestions); + }; + }; + Event.observe(B, "focus", C); + var E = { + treeId: this.getID(), + callback: function () { + window[this.treeId].inputObserver(); + }, + }; + this.getData().callbacks.dataArrived.push(E); + } else { + var E = { + treeId: this.getID(), + callback: function () { + window[this.treeId].openNodesFromInput(); + }, + }; + this.getData().callbacks.dataArrived.push(E); + } + }, + nodeClickCallback: function (C, A, B) { + if (A.clickCallback == null) { + var D = A.id; + if ( + !D.include(XWiki.constants.wikiSpaceSeparator) && + this.getData().getNodeDataSource(A).Class == "XWEDataSource" + ) { + D = + D + + XWiki.constants.wikiSpaceSeparator + + "Main" + + XWiki.constants.spacePageSeparator + + "WebHome"; + } + if ( + !D.include(XWiki.constants.spacePageSeparator) && + this.getData().getNodeDataSource(A).Class == "XWEWikiDataSource" + ) { + D = D + XWiki.constants.spacePageSeparator + "WebHome"; + } + if (this.getDataSource().Class != "XWEDataSource") { + D = D.substring( + D.indexOf(XWiki.constants.wikiSpaceSeparator) + 1, + D.length, + ); + } + if (A.resource.space == XWiki.currentSpace) { + D = D.substring( + D.indexOf(XWiki.constants.spacePageSeparator) + 1, + D.length, + ); + } + this.input.value = D; + this.inputValueCache = D; + } else { + A.clickCallback(C, A, B); + } + }, + setValue: function (A) { + this.input.value = A; + }, + getValue: function () { + return this.input.value; + }, + getSelectedResourceProperty: function (A) { + return XWiki.resource.get(this.getValue())[A]; + }, + isNewPage: function () { + if (this.getSelectedRecord() == null) { + return true; + } + return this.getSelectedRecord().isNewPage; + }, + isNewAttachment: function () { + return this.getSelectedRecord().isNewAttachment; + }, +}); From bf44c974fd910cb129d132029707ac21e947c22c Mon Sep 17 00:00:00 2001 From: Chantal Pichler Date: Thu, 12 Mar 2026 09:35:36 +0100 Subject: [PATCH 25/56] remove velocity from notification.css --- .../uicomponents/widgets/notification.css | 56 +++++++++---------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/src/main/webapp/resources/uicomponents/widgets/notification.css b/src/main/webapp/resources/uicomponents/widgets/notification.css index 73f47f24a..e582cedbb 100644 --- a/src/main/webapp/resources/uicomponents/widgets/notification.css +++ b/src/main/webapp/resources/uicomponents/widgets/notification.css @@ -20,36 +20,30 @@ font-weight: bold; line-height: 20px; } - -#set($notificationCustommization = []) -## each element: [notification type, bg color, text color, icon] -#set($discard = $notificationCustommization.add(["info", "#268", "#fff"])) -#set($discard = $notificationCustommization.add(["warning", "#fd8", "#330"])) -#set($discard = $notificationCustommization.add(["error", "#a00", "#fff"])) -#set($discard = $notificationCustommization.add(["inprogress", "#333", "#fff", "icons/xwiki/spinner-white.gif"])) -#set($discard = $notificationCustommization.add(["done", "#160", "#fff"])) -## -#foreach($item in $notificationCustommization) - #set($notificationType = ${item.get(0)}) - #set($bgColor = ${item.get(1)}) - #set($textColor = ${item.get(2)}) - #set($imgUrl = '') - #if ($item.size() >= 4) - #set($imgName = "$!{item.get(3)}") - #if($imgName.indexOf("/") >= 0) - #set($imgUrl = $xwiki.getSkinFile($imgName, true)) - #else - #set($imgUrl = $xwiki.getSkinFile("icons/silk/${imgName}.gif", true)) - #end - #end -/** $notificationType */ -.xnotification-${notificationType} { - background-color: $bgColor; - color: $textColor; - border-color: $textColor; -#if($imgUrl != '') - background-image: url(${imgUrl}); +.xnotification-info { + background-color: #268; + color: #fff; + border-color: #fff; +} +.xnotification-warning { + background-color: #fd8; + color: #330; + border-color: #330; +} +.xnotification-error { + background-color: #a00; + color: #fff; + border-color: #fff; +} +.xnotification-inprogress { + background-color: #333; + color: #fff; + border-color: #fff; + background-image: url(/skin/resources/icons/xwiki/spinner%2Dwhite.gif); padding-left: 22px; -#end } -#end +.xnotification-done { + background-color: #160; + color: #fff; + border-color: #fff; +} From 6af368a4974beeb9dd11dbacee6dabe97de65451 Mon Sep 17 00:00:00 2001 From: Fabian Pichler Date: Thu, 12 Mar 2026 10:05:16 +0100 Subject: [PATCH 26/56] default hide xwiki-menu --- src/main/webapp/templates/startpage.vm | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/webapp/templates/startpage.vm b/src/main/webapp/templates/startpage.vm index c351e3944..e8d3acc97 100644 --- a/src/main/webapp/templates/startpage.vm +++ b/src/main/webapp/templates/startpage.vm @@ -1,6 +1,7 @@ #template("xwikivars.vm") #template("layoutvars.vm") #template("htmlheader.vm") +#set($displayMainMenu = "$request.get('xwikiMenu')" == 'true') #if($displayMainMenu) ' -},lbcustominit:function(B,A,E,C){if(!$("lb")){var D=this.insertlbcontent(B,A,E,C); -new Insertion.Top("body",D) -}},lbinit:function(){return this.lbcustominit("#FFF","#FFF","#000","rounded") -},insertlbcontent:function(B,A,E,C){var D='
' -}}return D -},roundedlightbottom:function(A,B){var C='
'; -return C -},roundedbottom:function(A,B){var C='
'; -return C -},roundedlighttop:function(A,B){var C='
'; -return C -},roundedtop:function(A,B){var C='
'; -return C -},lightboxlink:function(B,A){var C='
"+B+""; -return C -}}); \ No newline at end of file +Lightbox = Class.create({ + initialize: function (C, A, B) { + this.formUrl = C; + this.saveUrl = A; + this.redirectUrl = B; + this.formData = ""; + this.loadedForms = new Object(); + this.lbinit(); + this.lbShow(); + this.lbLoadForm(C); + }, + lbShow: function () { + this.lbLoading(); + toggleClass($("lb-bg"), "hidden"); + toggleClass($("lb-align"), "hidden"); + $("lb-bg").style.height = document.body.offsetHeight + 35 + "px"; + }, + lbHide: function () { + toggleClass($("lb-bg"), "hidden"); + toggleClass($("lb-align"), "hidden"); + }, + lbLoading: function () { + if (this.currentUrl) { + this.loadedForms[this.currentUrl] = + $("lb-content").firstChild.cloneNode(true); + } + $("lb-content").innerHTML = this.getWaiting(); + }, + lbLoadForm: function (url) { + this.currentUrl = url; + if (this.loadedForms[url]) { + var c = $("lb-content"); + $("lb-content").innerHTML = ""; + $("lb-content").appendChild(this.loadedForms[url]); + this.form = c.getElementsByTagName("form")[0]; + var scripts = c.getElementsByTagName("script"); + for (var i = 0; i < scripts.length; ++i) { + eval(scripts[i].text); + } + } else { + new Ajax.Request(url, { onSuccess: this.lbFormDataLoaded.bind(this) }); + } + }, + lbFormDataLoaded: function (transport) { + var c = $("lb-content"); + c.innerHTML = "
" + transport.responseText + "
"; + this.form = c.getElementsByTagName("form")[0]; + var scripts = c.getElementsByTagName("script"); + for (var i = 0; i < scripts.length; ++i) { + eval(scripts[i].text); + } + $("lb-bg").style.height = document.body.offsetHeight + 35 + "px"; + }, + lbSaveForm: function () { + this.lbSaveData(); + Form.disable(this.form); + this.lbSaveSync(this.saveUrl); + this.lbHide(); + window.location = this.redirectUrl; + }, + lbNext: function (A) { + this.lbSaveData(); + this.lbLoading(); + this.lbLoadForm(A); + }, + lbSaveData: function () { + this.formData += "&" + Form.serialize(this.form); + this.formData = this.formData.replace("_segmentChief=&", "=&"); + this.formData = this.formData.replace("_periodicity=&", "=&"); + }, + lbSave: function (A) { + this.lbSaveData(); + new Ajax.Request(A + "?ajax=1", { + parameters: this.formData, + onSuccess: this.lbSaveDone.bind(this), + }); + }, + lbSaveSync: function (A) { + new Ajax.Request(A + "?ajax=1", { + parameters: this.formData, + asynchronous: false, + }); + }, + lbSaveDone: function (A) { + this.lbHide(); + }, + lbClearData: function () { + this.formData = ""; + }, + lbClose: function () { + this.lbHide(); + if (this.redirectUrl !== undefined) { + window.location = this.redirectUrl; + } + }, + lbSetNext: function (A) { + this.nextURL = A; + }, + getWaiting: function () { + return '
'; + }, + lbcustominit: function (B, A, E, C) { + if (!$("lb")) { + var D = this.insertlbcontent(B, A, E, C); + new Insertion.Top("body", D); + } + }, + lbinit: function () { + return this.lbcustominit("#FFF", "#FFF", "#000", "rounded"); + }, + insertlbcontent: function (B, A, E, C) { + var D = + '
'; + } + } + return D; + }, + roundedlightbottom: function (A, B) { + var C = + '
'; + return C; + }, + roundedbottom: function (A, B) { + var C = + '
'; + return C; + }, + roundedlighttop: function (A, B) { + var C = + '
'; + return C; + }, + roundedtop: function (A, B) { + var C = + '
'; + return C; + }, + lightboxlink: function (B, A) { + var C = + '" + + B + + ""; + return C; + }, +}); diff --git a/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js b/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js index fdcce00f2..75c8cd548 100644 --- a/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js +++ b/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js @@ -11,7 +11,7 @@ if(typeof(XWiki) == "undefined" || typeof(XWiki.widgets) == "undefined" || typeo XWiki.widgets.JumpToPage = Class.create(XWiki.widgets.ModalPopup, { translations: {}, /** The template of the XWiki URL. */ - urlTemplate : "$xwiki.getURL('__space__.__document__', '__action__')", + urlTemplate : "/__action__/__space__/__page__", /** Constructor. Registers the key listener that pops up the dialog. */ initialize : function($super) { if (window.celExecOnceAfterMessagesLoaded) { diff --git a/src/main/webapp/resources/js/xwiki/xwiki.js b/src/main/webapp/resources/js/xwiki/xwiki.js index c78c0377f..3c4f9d5db 100644 --- a/src/main/webapp/resources/js/xwiki/xwiki.js +++ b/src/main/webapp/resources/js/xwiki/xwiki.js @@ -418,55 +418,6 @@ var XWiki = (function (XWiki) { } }, - /** - * Insert a link for editing sections. - */ - insertSectionEditLinks: function () { - // Insert links only in view mode and for xwiki/2.0 documents. - if ( - XWiki.docsyntax == "xwiki/2.0" && - XWiki.contextaction == "view" && - XWiki.hasEdit - ) { - // Section count starts at one, not zero. - var sectioncount = 1; - - // We can't use element.select() since it does not keep the order of the elements in the flow. - var nodes = $("xwikicontent"); - if (!nodes) { - return; - } - nodes = nodes.childNodes; - - // Only allow section editing for the specified depth level (2 by default) - var headerPattern = new RegExp( - "H[1-" + $xwiki.getSectionEditingDepth() + "]", - ); - - // For all non-generated headers, add a SPAN and A element in order to be able to edit the section. - for (var i = 0; i < nodes.length; i++) { - var node = $(nodes[i]); - - if ( - headerPattern.test(node.nodeName) && - node.className.include("wikigeneratedheader") == false - ) { - var editspan = document.createElement("SPAN"); - var editlink = document.createElement("A"); - - editlink.href = window.docediturl + "?section=" + sectioncount; - editlink.style.textDecoration = "none"; - editlink.innerHTML = translations.edit; - editspan.className = "edit_section"; - - editspan.appendChild(editlink); - node.insert({ after: editspan }); - sectioncount++; - } - } - } - }, - /** * Display a modal box allowing to create the new document from a template when clicking on broken links. */ @@ -693,7 +644,6 @@ var XWiki = (function (XWiki) { this.makeRenderingErrorsExpandable(); this.fixLinksTargetAttribute(); - this.insertSectionEditLinks(); this.insertCreatePageFromTemplateModalBoxes(); this.watchlist.initialize(); @@ -1462,13 +1412,14 @@ document.observe("xwiki:dom:loading", function () { ? $$("meta[name=page]")[0].content : "WebHome"; XWiki.Document.URLTemplate = - "$xwiki.getURL('__space__.__page__', '__action__')"; + "/__action__/__space__/__page__"; + const contextPath = new URL(window.location.href).searchParams.get("contextPath") ?? ""; XWiki.Document.RestURLTemplate = - "${request.contextPath}/rest/wikis/__wiki__/spaces/__space__/pages/__page__"; + contextPath + "/rest/wikis/__wiki__/spaces/__space__/pages/__page__"; XWiki.Document.WikiSearchURLStub = - "${request.contextPath}/rest/wikis/__wiki__/search"; + contextPath + "/rest/wikis/__wiki__/search"; XWiki.Document.SpaceSearchURLStub = - "${request.contextPath}/rest/wikis/__wiki__/spaces/__space__/search"; + contextPath + "/rest/wikis/__wiki__/spaces/__space__/search"; XWiki.Document.getRestSearchURL = function (queryString, space, wiki) { wiki = wiki || XWiki.Document.currentWiki; var url; diff --git a/src/main/webapp/resources/uicomponents/viewers/comments.js b/src/main/webapp/resources/uicomponents/viewers/comments.js index bf5482b7c..1fdcab5cf 100644 --- a/src/main/webapp/resources/uicomponents/viewers/comments.js +++ b/src/main/webapp/resources/uicomponents/viewers/comments.js @@ -388,7 +388,7 @@ var XWiki = (function (XWiki) { if (!form) { return; } - var previewURL = "$xwiki.getURL('__space__.__page__', 'preview')" + var previewURL = "/preview/__space__/__page__" .replace( "__space__", encodeURIComponent($$("meta[name=space]")[0].content), diff --git a/src/main/webapp/resources/uicomponents/widgets/fullScreen.js b/src/main/webapp/resources/uicomponents/widgets/fullScreen.js index e1f4e1532..a48bce851 100644 --- a/src/main/webapp/resources/uicomponents/widgets/fullScreen.js +++ b/src/main/webapp/resources/uicomponents/widgets/fullScreen.js @@ -254,7 +254,7 @@ XWiki.widgets.FullScreen = Class.create({ class: "fullScreenEditButton", title: this.translations.editFullScreen, alt: this.translations.editFullScreen, - src: "$xwiki.getSkinFile('icons/silk/arrow_out.gif')", + src: "/skin/resources/icons/silk/arrow_out.gif", }); // Add functionality fullScreenActivator.observe( @@ -302,7 +302,7 @@ XWiki.widgets.FullScreen = Class.create({ class: "fullScreenCloseButton", title: this.translations.exitFullScreen, alt: this.translations.exitFullScreen, - src: "$xwiki.getSkinFile('icons/silk/arrow_in.gif')", + src: "/skin/resources/icons/silk/arrow_in.gif", }); // Add functionality this.closeButton.observe("click", this.closeFullScreen.bind(this)); diff --git a/src/main/webapp/resources/uicomponents/widgets/list/xlist.js b/src/main/webapp/resources/uicomponents/widgets/list/xlist.js index 999507c7c..6d4faaf0d 100644 --- a/src/main/webapp/resources/uicomponents/widgets/list/xlist.js +++ b/src/main/webapp/resources/uicomponents/widgets/list/xlist.js @@ -10,7 +10,7 @@ * ], * { // options * numbered: false, - * icon: "$xwiki.getSkinFile('icons/silk/sport_basketball.gif')", + * icon: "pathToIcon", * classes : "myListExtraClass", * itemClasses : "myListItemExtraClasses", * eventListeners : { @@ -25,7 +25,7 @@ * * xlist.addItem( * new XWiki.widgets.XListItem('A fifth element added later', { - * icon : "$xwiki.getSkinFile('icons/silk/bomb.gif')", // this overrides the one defined for the whole list + * icon : "pathToIcon", // this overrides the one defined for the whole list * eventListeners: { * // Event listeners defined just for this specific list item * 'mouseout' : function() { console.log('just this list item is bound to this event', this); } From 5c1b9c7174f02ef7578c98e2bdc998f13164417b Mon Sep 17 00:00:00 2001 From: Chantal Pichler Date: Thu, 12 Mar 2026 18:14:25 +0100 Subject: [PATCH 39/56] fix wrong path --- src/main/webapp/templates/importinline.vm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/webapp/templates/importinline.vm b/src/main/webapp/templates/importinline.vm index 1df4ea8ed..24ba7b17d 100644 --- a/src/main/webapp/templates/importinline.vm +++ b/src/main/webapp/templates/importinline.vm @@ -36,7 +36,7 @@ resetting programming rights for celements2web: $services.celementsweb.resetProg #set($extJsParam = $jsService.createExtJSParam().setAction('file')) #set($extJsParam = $extJsParam.setLazyLoad(true)) $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/xwiki.js'))## - $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki-misc.js'))## + $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/xwiki-misc.js'))## #** - **# diff --git a/src/main/webapp/templates/javascript.vm b/src/main/webapp/templates/javascript.vm index 67e55055b..a6553a513 100644 --- a/src/main/webapp/templates/javascript.vm +++ b/src/main/webapp/templates/javascript.vm @@ -23,7 +23,6 @@ $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/confir $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/notification.js'))## $services.css.includeCSSPage(':uicomponents/widgets/notification.css')## $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/list/xlist.js'))## -$!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/suggest/suggest.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/xwiki-misc.js'))## #if($hasedit || $isContentEditor || $isAdmin || ($services.celMenu.getMenuHeaders().size() > 0)) $services.css.includeCSSPage(':celRes/celements2.css')## From c7a8884a46e544582ec66a1dd79ab4ac7befcbd1 Mon Sep 17 00:00:00 2001 From: Chantal Pichler Date: Mon, 16 Mar 2026 14:51:33 +0100 Subject: [PATCH 47/56] fix imports for google-fonts --- .../resources/celRes/ImageAndFilePicker/ImageAndFilePicker.css | 2 +- src/main/webapp/resources/celRes/celTabMenu/tabMenu.css | 2 +- src/main/webapp/resources/celRes/celements2.css | 2 +- src/main/webapp/skins/albatross/screenlayout.css | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/webapp/resources/celRes/ImageAndFilePicker/ImageAndFilePicker.css b/src/main/webapp/resources/celRes/ImageAndFilePicker/ImageAndFilePicker.css index 43f41aa45..62b15b823 100644 --- a/src/main/webapp/resources/celRes/ImageAndFilePicker/ImageAndFilePicker.css +++ b/src/main/webapp/resources/celRes/ImageAndFilePicker/ImageAndFilePicker.css @@ -1,4 +1,4 @@ -@import url(google-fonts/Open-Sans/Open-Sans-300italic,400italic,600italic,700italic,800italic,300,400,600,700,800.css); +@import url(celRes/google-fonts/Open-Sans/Open-Sans-300italic,400italic,600italic,700italic,800italic,300,400,600,700,800.css); .filebasePicker #attachments { display: flex; diff --git a/src/main/webapp/resources/celRes/celTabMenu/tabMenu.css b/src/main/webapp/resources/celRes/celTabMenu/tabMenu.css index 9fd23ea77..96f6b1b28 100644 --- a/src/main/webapp/resources/celRes/celTabMenu/tabMenu.css +++ b/src/main/webapp/resources/celRes/celTabMenu/tabMenu.css @@ -1,4 +1,4 @@ -@import url(google-fonts/Open-Sans/Open-Sans-300italic,400italic,600italic,700italic,800italic,300,400,600,700,800.css); +@import url(celRes/google-fonts/Open-Sans/Open-Sans-300italic,400italic,600italic,700italic,800italic,300,400,600,700,800.css); /* tabMenu.css: * tabMenu layout * 2008 - 2011 synventis gmbh diff --git a/src/main/webapp/resources/celRes/celements2.css b/src/main/webapp/resources/celRes/celements2.css index 4ae9adf4f..2ca3f8fff 100644 --- a/src/main/webapp/resources/celRes/celements2.css +++ b/src/main/webapp/resources/celRes/celements2.css @@ -1,4 +1,4 @@ -@import url(google-fonts/Open-Sans/Open-Sans-300italic,400italic,600italic,700italic,800italic,300,400,600,700,800.css); +@import url(celRes/google-fonts/Open-Sans/Open-Sans-300italic,400italic,600italic,700italic,800italic,300,400,600,700,800.css); /* Floating Windows Classes */ .sheet { position: absolute; diff --git a/src/main/webapp/skins/albatross/screenlayout.css b/src/main/webapp/skins/albatross/screenlayout.css index d29c0b636..aaaa43972 100644 --- a/src/main/webapp/skins/albatross/screenlayout.css +++ b/src/main/webapp/skins/albatross/screenlayout.css @@ -1,4 +1,4 @@ -@import url(google-fonts/Open-Sans/Open-Sans-300italic,400italic,600italic,700italic,800italic,300,400,600,700,800.css); +@import url(celRes/google-fonts/Open-Sans/Open-Sans-300italic,400italic,600italic,700italic,800italic,300,400,600,700,800.css); /** General layout of the page From fbfa9924eec83f532fb2fd24ff3df87df2a942a9 Mon Sep 17 00:00:00 2001 From: Chantal Pichler Date: Mon, 16 Mar 2026 15:15:50 +0100 Subject: [PATCH 48/56] remove simpleedittoolbar.vm --- src/main/webapp/templates/editwiki.vm | 1 - .../webapp/templates/simpleedittoolbar.vm | 58 ------------------- 2 files changed, 59 deletions(-) delete mode 100644 src/main/webapp/templates/simpleedittoolbar.vm diff --git a/src/main/webapp/templates/editwiki.vm b/src/main/webapp/templates/editwiki.vm index 3e2864375..75195f2eb 100644 --- a/src/main/webapp/templates/editwiki.vm +++ b/src/main/webapp/templates/editwiki.vm @@ -17,7 +17,6 @@
-#template("simpleedittoolbar.vm") $xwiki.getTextArea($tdoc.content)
## xwikieditcontent
## xwikitext diff --git a/src/main/webapp/templates/simpleedittoolbar.vm b/src/main/webapp/templates/simpleedittoolbar.vm deleted file mode 100644 index f226e3e39..000000000 --- a/src/main/webapp/templates/simpleedittoolbar.vm +++ /dev/null @@ -1,58 +0,0 @@ - From abac36e773bdaa8a549e999ec988ce58349206fe Mon Sep 17 00:00:00 2001 From: Chantal Pichler Date: Mon, 16 Mar 2026 15:26:54 +0100 Subject: [PATCH 49/56] fix access to messages in xwiki.js --- src/main/webapp/resources/js/xwiki/xwiki.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/webapp/resources/js/xwiki/xwiki.js b/src/main/webapp/resources/js/xwiki/xwiki.js index 4828549f4..10fea303b 100644 --- a/src/main/webapp/resources/js/xwiki/xwiki.js +++ b/src/main/webapp/resources/js/xwiki/xwiki.js @@ -371,7 +371,7 @@ var XWiki = (function (XWiki) { error.next().hasClassName("xwikirenderingerrordescription") ) { error.style.cursor = "pointer"; - error.title = this.translations.readTechnicalInformation; + error.title = this.messages.translations.readTechnicalInformation; Event.observe(error, "click", function (event) { event.element().next().toggleClassName("hidden"); }); @@ -464,7 +464,7 @@ var XWiki = (function (XWiki) { }, onFailure: function () { new XWiki.widgets.Notification( - this.translations.createAjaxError, + this.messages.translations.createAjaxError, "error", { inactive: true }, ).show(); @@ -639,8 +639,8 @@ var XWiki = (function (XWiki) { if (window.celExecOnceAfterMessagesLoaded) { window.celExecOnceAfterMessagesLoaded( (celMessages) => { - this.translations = celMessages.xwiki; - this.celMeta = celMessages.celmeta; + this.messages.translations = celMessages.xwiki; + this.messages.celMeta = celMessages.celmeta; }, ); } else { @@ -1420,11 +1420,11 @@ document.observe("xwiki:dom:loading", function () { XWiki.Document.URLTemplate = "/__action__/__space__/__page__"; XWiki.Document.RestURLTemplate = - XWiki.celMeta.contextPath + "/rest/wikis/__wiki__/spaces/__space__/pages/__page__"; + XWiki.messages.celMeta.contextPath + "/rest/wikis/__wiki__/spaces/__space__/pages/__page__"; XWiki.Document.WikiSearchURLStub = - XWiki.celMeta.contextPath + "/rest/wikis/__wiki__/search"; + XWiki.messages.celMeta.contextPath + "/rest/wikis/__wiki__/search"; XWiki.Document.SpaceSearchURLStub = - XWiki.celMeta.contextPath + "/rest/wikis/__wiki__/spaces/__space__/search"; + XWiki.messages.celMeta.contextPath + "/rest/wikis/__wiki__/spaces/__space__/search"; XWiki.Document.getRestSearchURL = function (queryString, space, wiki) { wiki = wiki || XWiki.Document.currentWiki; var url; From e8ef7b6111d48572badcc7511b39eab309bedf19 Mon Sep 17 00:00:00 2001 From: Chantal Pichler Date: Mon, 16 Mar 2026 17:04:27 +0100 Subject: [PATCH 50/56] fix initializer of xwiki.js --- src/main/webapp/resources/js/xwiki/xwiki.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/webapp/resources/js/xwiki/xwiki.js b/src/main/webapp/resources/js/xwiki/xwiki.js index 10fea303b..3f7ce7aa7 100644 --- a/src/main/webapp/resources/js/xwiki/xwiki.js +++ b/src/main/webapp/resources/js/xwiki/xwiki.js @@ -641,19 +641,17 @@ var XWiki = (function (XWiki) { (celMessages) => { this.messages.translations = celMessages.xwiki; this.messages.celMeta = celMessages.celmeta; + document.fire("xwiki:dom:loading"); + this.makeRenderingErrorsExpandable(); + this.fixLinksTargetAttribute(); + this.insertCreatePageFromTemplateModalBoxes(); + this.watchlist.initialize(); + document.fire("xwiki:dom:loaded"); }, ); } else { console.warn("celExecOnceAfterMessagesLoaded not available!"); } - document.fire("xwiki:dom:loading"); - - this.makeRenderingErrorsExpandable(); - this.fixLinksTargetAttribute(); - this.insertCreatePageFromTemplateModalBoxes(); - this.watchlist.initialize(); - - document.fire("xwiki:dom:loaded"); } }, }); From a392c72878d7d4c232ee3770cb1b96816f58cf48 Mon Sep 17 00:00:00 2001 From: Chantal Pichler Date: Mon, 16 Mar 2026 17:08:15 +0100 Subject: [PATCH 51/56] remove all uses of XWiki.widgets.Suggest and delete xxxsuggest.js --- .../docs/xwiki/XWiki/XWikiGroupSheet.xml | 14 - src/main/webapp/resources/celJS/addSuggest.js | 70 --- .../resources/js/xwiki/compatibility.js | 27 - .../js/xwiki/suggest/ajaxSuggest.css | 66 --- .../resources/js/xwiki/suggest/ajaxSuggest.js | 561 ------------------ .../xwiki/suggest/suggest_img/as_pointer.gif | Bin 66 -> 0 bytes .../suggest/suggest_img/hl_corner_bl.gif | Bin 73 -> 0 bytes .../suggest/suggest_img/hl_corner_br.gif | Bin 73 -> 0 bytes .../suggest/suggest_img/hl_corner_tl.gif | Bin 73 -> 0 bytes .../suggest/suggest_img/hl_corner_tr.gif | Bin 73 -> 0 bytes .../suggest/suggest_img/ul_corner_bl.gif | Bin 49 -> 0 bytes .../suggest/suggest_img/ul_corner_br.gif | Bin 49 -> 0 bytes .../suggest/suggest_img/ul_corner_tl.gif | Bin 49 -> 0 bytes .../suggest/suggest_img/ul_corner_tr.gif | Bin 49 -> 0 bytes .../resources/js/xwiki/widgets/jumpToPage.js | 18 - .../templates/celTemplates/ObjectEdit.vm | 2 - src/main/webapp/templates/tagedit.vm | 2 +- 17 files changed, 1 insertion(+), 759 deletions(-) delete mode 100644 src/main/webapp/resources/celJS/addSuggest.js delete mode 100644 src/main/webapp/resources/js/xwiki/suggest/ajaxSuggest.css delete mode 100644 src/main/webapp/resources/js/xwiki/suggest/ajaxSuggest.js delete mode 100644 src/main/webapp/resources/js/xwiki/suggest/suggest_img/as_pointer.gif delete mode 100644 src/main/webapp/resources/js/xwiki/suggest/suggest_img/hl_corner_bl.gif delete mode 100644 src/main/webapp/resources/js/xwiki/suggest/suggest_img/hl_corner_br.gif delete mode 100644 src/main/webapp/resources/js/xwiki/suggest/suggest_img/hl_corner_tl.gif delete mode 100644 src/main/webapp/resources/js/xwiki/suggest/suggest_img/hl_corner_tr.gif delete mode 100644 src/main/webapp/resources/js/xwiki/suggest/suggest_img/ul_corner_bl.gif delete mode 100644 src/main/webapp/resources/js/xwiki/suggest/suggest_img/ul_corner_br.gif delete mode 100644 src/main/webapp/resources/js/xwiki/suggest/suggest_img/ul_corner_tl.gif delete mode 100644 src/main/webapp/resources/js/xwiki/suggest/suggest_img/ul_corner_tr.gif diff --git a/src/main/webapp/docs/xwiki/XWiki/XWikiGroupSheet.xml b/src/main/webapp/docs/xwiki/XWiki/XWikiGroupSheet.xml index de4e78be1..06c781744 100644 --- a/src/main/webapp/docs/xwiki/XWiki/XWikiGroupSheet.xml +++ b/src/main/webapp/docs/xwiki/XWiki/XWikiGroupSheet.xml @@ -155,20 +155,6 @@ $services.css.includeCSSPage(':js/xwiki/table/livetable.css')## $('addNewGroup').observe('click', this.addNewMember.bind(this, 'group', $('groupSuggest'))); } }, - createSuggest: function(input, uorg, suggestObj) { - // Clear the errors - $('errMsg').innerHTML = ""; - suggesturl = "${doc.getURL('view', 'xpage=uorgsuggest&classname=XWiki.XWikiUsers&wiki=local')}"; - - if (uorg == "user") { - suggesturl += "&uorg=user&"; - icon = "$xwiki.getSkinFile('icons/silk/user.gif')"; - } else { - suggesturl += "&uorg=group&"; - icon = "$xwiki.getSkinFile('icons/silk/group.gif')"; - } - return new XWiki.widgets.Suggest(input, { script: suggesturl, varname:'input', icon:icon }); - }, addNewMember: function(uorg, input) { if (input) { var url = "${doc.getURL()}?xpage=adduorg&uorg=" + uorg + "&name=" + input.value; diff --git a/src/main/webapp/resources/celJS/addSuggest.js b/src/main/webapp/resources/celJS/addSuggest.js deleted file mode 100644 index b2c9a7967..000000000 --- a/src/main/webapp/resources/celJS/addSuggest.js +++ /dev/null @@ -1,70 +0,0 @@ -/* - * See the NOTICE file distributed with this work for additional - * information regarding copyright ownership. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ - -Event.observe(window, 'load', getSuggestConf); - -function getSuggestConf() { - var fields = new Array(); - $$('input').each(function(inpField){ - if(inpField.type == 'text') { - fields.push(inpField.id); - } - }); - new Ajax.Request('?', { - method : 'post', - parameters : { - 'xpage' : 'celements_ajax', - 'ajax_mode' : 'GetSuggestFields', - 'fields' : fields - }, - onSuccess : function(transport){ - answer = transport.responseText; - if(answer.isJSON()) { - jsonanswer = transport.responseText.evalJSON(); - for(var i = 0; i < jsonanswer.length; i++) { - addSuggest(jsonanswer[i]); - } - } else { - if ((typeof console != 'undefined') && (typeof console.error != 'undefined')) { - console.error("Ajax answer is no JSON.", transport); - } - } - }, - onFailure : function(transport) { - if ((typeof console != 'undefined') && (typeof console.error != 'undefined')) { - console.error("Getting suggest fields failed.", transport); - } - } - }); -} - -var addSuggest = function(conf) { - Event.observe($(conf.id), "focus", function() { - var url = '?xpage=suggest&classname=' + conf.classname + '&fieldname=' + conf.fieldname + '&'; - new XWiki.widgets.Suggest(this, { - script: url, - varname: "input", - seps: " ,|", - offsety: 13, - minchars: 2, - timeout: 10000 - }); - }); -}; diff --git a/src/main/webapp/resources/js/xwiki/compatibility.js b/src/main/webapp/resources/js/xwiki/compatibility.js index 94c0ddd58..86021e302 100644 --- a/src/main/webapp/resources/js/xwiki/compatibility.js +++ b/src/main/webapp/resources/js/xwiki/compatibility.js @@ -20,33 +20,6 @@ } } - /** - * _xwk is an old namespace for XWiki code that was optional - * Deprecated since 2.6RC1 - */ - if (window.useXWKns) { - warn("_xwk namespace is deprecated since XWiki 2.6RC1. Use the XWiki namespace instead."); - if (typeof _xwk == "undefined") { - _xwk = new Object(); - } - } else { - _xwk = window; - } - - /** - * Deprecated since 2.6RC1 - */ - if (typeof XWiki.widgets.Suggest !== 'undefined') { - _xwk.ajaxSuggest = Class.create(XWiki.widgets.Suggest, { - initialize: function ($super) { - warn("ajaxSuggest is deprecated since XWiki 2.6RC1. Use XWiki.widgets.Suggest instead."); - var args = $A(arguments) - args.shift(); - $super.apply(_xwk, args); - } - }); - } - /** * Deprecated since 1.9M2 */ diff --git a/src/main/webapp/resources/js/xwiki/suggest/ajaxSuggest.css b/src/main/webapp/resources/js/xwiki/suggest/ajaxSuggest.css deleted file mode 100644 index d74ed0364..000000000 --- a/src/main/webapp/resources/js/xwiki/suggest/ajaxSuggest.css +++ /dev/null @@ -1,66 +0,0 @@ -@import "/file/resources/celRes/theme/defaultColors.css"; - -.xhover { - background:red; -} - -input[type="text"].suggest { - border-width: 1px; -} - -body { - position: relative; -} - -div.suggestItems { - position:absolute; - border: 1px solid var(--borderColor); - border-top: none; - background: white; /* theme color ? */ - z-index: 100013; - text-align:left; -} - -div.suggestItems ul { - margin: 0px; -} - -div.suggestItems li { - overflow:hidden; - white-space:nowrap; - margin-right:2px; -} - -ul.suggestList { - margin:0px !important; - text-transform:none; - color:var(--textColor); - font-weight:normal; -} - -ul.suggestList .xhighlight { - background-color: var(--highlightColor); -} - -div.suggestItemName { - text-indent: 0; -} - -div.suggestItemInfo { - color: #556677; - font-size: 0.8em; - padding-left: 20px; - text-indent: 0; -} - -div.suggestItemName, -div.suggestItemInfo { - text-decoration: inherit; -} - -.highlight { - background-color: var(--highlightColor); - font-weight:bold; - text-decoration: inherit; -} - diff --git a/src/main/webapp/resources/js/xwiki/suggest/ajaxSuggest.js b/src/main/webapp/resources/js/xwiki/suggest/ajaxSuggest.js deleted file mode 100644 index ff6f545b2..000000000 --- a/src/main/webapp/resources/js/xwiki/suggest/ajaxSuggest.js +++ /dev/null @@ -1,561 +0,0 @@ -var XWiki = (function(XWiki){ - - var widgets = XWiki.widgets = XWiki.widgets || {}; - - if (typeof widgets.XList == 'undefined') { - if (typeof console != "undefined" && typeof console.warn == "function") { - console.warn("[Suggest widget] Required class missing: XWiki.widgets.XList"); - } - } else { - -/** - * Suggest class. - * Provide value suggestions to users when starting to type in a text input. - */ - widgets.Suggest = Class.create({ - options : { - // The minimum number of characters after which to trigger the suggest - minchars : 1, - // The HTTP method for the AJAX request - method : "get", - // The name of the request parameter holding the input stub - varname : "input", - // The CSS classname of the suggest list - className : "ajaxsuggest", - timeout : 2500, - delay : 500, - offsety : 0, - // Display a "no results" message, or simply hide the suggest box when no suggestions are available - shownoresults : true, - // The message to display as the "no results" message - noresults : "No results!", - maxheight : 250, - cache : false, - seps : "", - icon : null, - // The name of the JSON variable or XML element holding the results. - // "results" for the old suggest, "searchResults" for the REST search. - resultsParameter : "results", - // The name of the JSON parameter or XML attribute holding the result identifier. - // "id" for both the old suggest and the REST search. - resultId : "id", - // The name of the JSON parameter or XML attribute holding the result value. - // "value" for the old suggest, "pageFullName" for the REST page search. - resultValue : "value", - // The name of the JSON parameter or XML attribute holding the result auxiliary information. - // "info" for the old suggest, "pageFullName" for the REST search. - resultInfo : "info", - // The id of the element that will hold the suggest element - parentContainer : "body" - }, - sInput : "", - nInputChars : 0, - aSuggestions : [], - iHighlighted : 0, - - /** - * Initialize the suggest - * - * @param {Object} fld the suggest field - * @param {Object} param the options - */ - initialize: function (fld, param){ - this.fld = $(fld); - - if (!this.fld) { - return false; - } - - // Clone default options from the prototype so that they are not shared and extend options with passed parameters - this.options = Object.extend(Object.clone(this.options), param || { }); - - // Reset the container if the configured parameter is not valid - if (!$(this.options.parentContainer)) { - this.options.parentContainer = $(document.body); - } - - if (this.options.seps) { - this.seps = this.options.seps; - } else { - this.seps = ""; - } - // Bind the key listeners on the input field. - this.fld.observe("keyup", this.onKeyUp.bindAsEventListener(this)); - if (Prototype.Browser.IE || Prototype.Browser.WebKit) { - this.fld.observe("keydown", this.onKeyPress.bindAsEventListener(this)); - } else { - this.fld.observe("keypress", this.onKeyPress.bindAsEventListener(this)); - } - - // Prevent normal browser autocomplete - this.fld.setAttribute("autocomplete", "off"); - }, - - /** - * Treats normal characters and triggers the autocompletion behavior. This is needed since the field value is not - * updated when keydown/keypress are called, so the suggest would work with the previous value. The disadvantage is - * that keyUp is not fired for each stroke in a long keypress, but only once at the end. This is not a real problem, - * though. - */ - onKeyUp: function(event) - { - var key = event.keyCode; - switch(key) { - // Ignore special keys, which are treated in onKeyPress - case Event.KEY_RETURN: - case Event.KEY_ESC: - case Event.KEY_UP: - case Event.KEY_DOWN: - break; - default: { - // If there are separators in the input string, get suggestions only for the text after the last separator - // TODO The user might be typing in the middle of the field, not in the last item. Do a better detection by - // comparing the new value with the old one. - if(this.seps) { - var lastIndx = -1; - for(var i = 0; i < this.seps.length; i++) { - if(this.fld.value.lastIndexOf(this.seps.charAt(i)) > lastIndx) { - lastIndx = this.fld.value.lastIndexOf(this.seps.charAt(i)); - } - } - if(lastIndx == -1) { - this.getSuggestions(this.fld.value); - } else { - this.getSuggestions(this.fld.value.substring(lastIndx+1)); - } - } else { - this.getSuggestions(this.fld.value); - } - } - } - }, - /** - * Treats Up and Down arrows, Enter and Escape, affecting the UI meta-behavior. Enter puts the currently selected - * value inside the target field, Escape closes the suggest dropdown, Up and Down move the current selection. - */ - onKeyPress: function(event) { - if(!$(this.suggest)) { - // Let the key events pass through if the UI is not displayed - return; - } - var key = event.keyCode; - - switch(key) { - case Event.KEY_RETURN: - if(this.aSuggestions.length == 1) { - this.highlightFirst(); - } - this.setHighlightedValue(); - Event.stop(event); - break; - case Event.KEY_ESC: - this.clearSuggestions(); - Event.stop(event); - break; - case Event.KEY_UP: - this.changeHighlight(key); - Event.stop(event); - break; - case Event.KEY_DOWN: - this.changeHighlight(key); - Event.stop(event); - break; - default: - break; - } - }, - - /** - * Get suggestions - * - * @param {Object} val the value to get suggestions for - */ - getSuggestions: function (val) - { - // if input stays the same, do nothing - // - val = val.strip(); - if (val == this.sInput) { - return false; - } - - // input length is less than the min required to trigger a request - // reset input string - // do nothing - // - if (val.length < this.options.minchars) { - this.sInput = ""; - return false; - } - - // if caching enabled, and user is typing (ie. length of input is increasing) - // filter results out of aSuggestions from last request - // - if (val.length>this.nInputChars && this.aSuggestions.length && this.options.cache) - { - var arr = []; - for (var i=0;i" + val.substring(st, st+this.sInput.length) + "" + val.substring(st+this.sInput.length); - var span = new Element("span").update(output); - var valueNode = new Element('div') - .insert(new Element('span', {'class':'suggestId'}).update(arr[i].id)) - .insert(new Element('span', {'class':'suggestValue'}).update(arr[i].value)) - .insert(new Element('span', {'class':'suggestInfo'}).update(arr[i].info)); - - var item = new XWiki.widgets.XListItem( span , { - containerClasses: 'suggestItem', - value: valueNode, - noHighlight: true // we do the highlighting ourselves - }); - - list.addItem(item); - } - - // no results - if (arr.length == 0) - { - list.addItem( new XWiki.widgets.XListItem(this.options.noresults, {'classes' : 'noSuggestion'})) - } - div.appendChild( list.getElement() ); - - // get position of target textfield - // position holding div below it - // set width of holding div to width of field - var pos = this.fld.cumulativeOffset(); - - div.style.left = pos.left + "px"; - div.style.top = (pos.top + this.fld.offsetHeight + this.options.offsety) + "px"; - div.style.width = this.fld.offsetWidth + "px"; - - // set mouseover functions for div - // when mouse pointer leaves div, set a timeout to remove the list after an interval - // when mouse enters div, kill the timeout so the list won't be removed - div.onmouseover = function(){ pointer.killTimeout() } - div.onmouseout = function(){ pointer.resetTimeout() } - - // add DIV to document - $(this.options.parentContainer).insert(div); - this.suggest = div; - - // currently no item is highlighted - this.iHighlighted = 0; - - // remove list after an interval - var pointer = this; - this.toID = setTimeout(function () { pointer.clearSuggestions() }, this.options.timeout); - }, - - /** - * Change highlight - * - * @param {Object} key - */ - changeHighlight: function(key) - { - var list = this.suggest.down('ul'); - if (!list) - return false; - - var n, elem; - - if (this.iHighlighted) { - if (key == 40) - elem = this.iHighlighted.next() || list.down('li'); - else if (key == 38) - elem = this.iHighlighted.previous() || list.down('li:last-child'); - } - else { - if (key == 40) - elem = list.down('li'); - else if (key == 38) - if (list.select('li') > 0) { - elem = list.select('li')[list.select('li').length]; - } - } - - if (elem) { - this.setHighlight(elem); - } - }, - - /** - * Set highlight - * - * @param {Object} n - */ - setHighlight: function(highlightedItem) - { - if (this.iHighlighted) - this.clearHighlight(); - - highlightedItem.addClassName("xhighlight"); - - this.iHighlighted = highlightedItem; - - this.killTimeout(); - }, - - /** - * Clear highlight - */ - clearHighlight: function() - { - if (this.iHighlighted) { - this.iHighlighted.removeClassName("xhighlight"); - delete this.iHighlighted; - } - }, - - highlightFirst: function() - { - if (this.suggest && this.suggest.down('ul')) { - var first = this.suggest.down('ul').down('li'); - if (first) { - this.setHighlight(first); - } - } - }, - - setHighlightedValue: function () - { - if (this.iHighlighted && !this.iHighlighted.hasClassName('noSuggestion')) - { - if(this.sInput == "" && this.fld.value == "") - this.sInput = this.fld.value = this.iHighlighted.down(".suggestValue").innerHTML; - else { - if(this.seps) { - var lastIndx = -1; - for(var i = 0; i < this.seps.length; i++) - if(this.fld.value.lastIndexOf(this.seps.charAt(i)) > lastIndx) - lastIndx = this.fld.value.lastIndexOf(this.seps.charAt(i)); - if(lastIndx == -1) - this.sInput = this.fld.value = this.iHighlighted.down(".suggestValue").innerHTML; - else - { - this.fld.value = this.fld.value.substring(0, lastIndx+1) + this.iHighlighted.down(".suggestValue").innerHTML; - this.sInput = this.fld.value.substring(lastIndx+1); - } - } - else - this.sInput = this.fld.value = this.iHighlighted.down(".suggestValue").innerHTML; - } - - Event.fire(this.fld, "xwiki:suggest:selected", { - 'id': this.iHighlighted.down(".suggestId").innerHTML, - 'value': this.iHighlighted.down(".suggestValue").innerHTML, - 'info': this.iHighlighted.down(".suggestInfo").innerHTML - }); - this.fld.focus(); - - /* - // move cursor to end of input (safari) - // - if (this.fld.selectionStart) - this.fld.setSelectionRange(this.sInput.length, this.sInput.length);*/ - - this.clearSuggestions(); - - // pass selected object to callback function, if exists - - if (typeof(this.options.callback) == "function") { - this.options.callback( { - 'id': this.iHighlighted.down(".suggestId").innerHTML, - 'value': this.iHighlighted.down(".suggestValue").innerHTML, - 'info': this.iHighlighted.down(".suggestInfo").innerHTML - } ); - } - - //there is a hidden input - if(this.fld.id.indexOf("_suggest") > 0) { - var hidden_id = this.fld.id.substring(0, this.fld.id.indexOf("_suggest")); - var hidden_inp = $(hidden_id); - - if(hidden_inp) - hidden_inp.value = this.iHighlighted.down(".suggestInfo").innerHTML; - } - - } - }, - - /** - * Kill timeout - */ - killTimeout: function() - { - clearTimeout(this.toID); - }, - - /** - * Reset timeout - */ - resetTimeout: function() - { - clearTimeout(this.toID); - var pointer = this; - this.toID = setTimeout(function () { pointer.clearSuggestions() }, 1000); - }, - - /** - * Clear suggestions - */ - clearSuggestions: function() { - this.killTimeout(); - var ele = $(this.suggest); - var pointer = this; - if (ele) { - var fade = new Effect.Fade(ele, {duration: "0.25", afterFinish : function() { - if($(pointer.suggest)) { - $(pointer.suggest).remove(); - delete pointer.suggest; - } - }}); - } - } - - }); - - } - - return XWiki; - -})(XWiki || {}); diff --git a/src/main/webapp/resources/js/xwiki/suggest/suggest_img/as_pointer.gif b/src/main/webapp/resources/js/xwiki/suggest/suggest_img/as_pointer.gif deleted file mode 100644 index dbc21220f6ff01769188756f12651a07d6b4c309..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66 zcmZ?wbhEHb6k*_EXkcJ4Ha7nM|G(l-7DjdkMg|=QAOOiQFiG~*Gn~j>HK!%O$m{Ll T%Az+l_f`9%Ef-}lGFSruI~EhJ diff --git a/src/main/webapp/resources/js/xwiki/suggest/suggest_img/hl_corner_bl.gif b/src/main/webapp/resources/js/xwiki/suggest/suggest_img/hl_corner_bl.gif deleted file mode 100644 index b701d01c93cc7746369c52cba6c05e5d65946822..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZ?wbhEHbWMg1sSj4~}9dlO8DMuk>gORDt|Ns9PU_kLF3nM!N3xf_w0Hl_InUBLu T=k&vg4@D%dJQ9pyVz34PYIYFP diff --git a/src/main/webapp/resources/js/xwiki/suggest/suggest_img/hl_corner_br.gif b/src/main/webapp/resources/js/xwiki/suggest/suggest_img/hl_corner_br.gif deleted file mode 100644 index 11debd7fec2c4fe5442211abfead3fd107d2f4c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZ?wbhEHbWMg1sSj4~}9dlO8DMuk>gORDt|Ns9PU_kLF3nM!N3xf_w0Hl_Ina_i3 T&5=VJ4?I|r6eIY>gTWdAc$pGy diff --git a/src/main/webapp/resources/js/xwiki/suggest/suggest_img/hl_corner_tl.gif b/src/main/webapp/resources/js/xwiki/suggest/suggest_img/hl_corner_tl.gif deleted file mode 100644 index 1c2bbaf7a7430c4a574a83f2ca27bd7df5770879..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZ?wbhEHbWMg1sSj4~}9dlO8DMuk>gQ1!2|Ns9PU_kLF3nM!N3xf_w0Hl_Ina@Is T>DGaR5=uKiOyVeEVz34PW|RgQ1!2|Ns9PU_kLF3nM!N3xf_w0Hl_InU6#0 T@`ppVrX95hg;u09F<1itYmX4% diff --git a/src/main/webapp/resources/js/xwiki/suggest/suggest_img/ul_corner_bl.gif b/src/main/webapp/resources/js/xwiki/suggest/suggest_img/ul_corner_bl.gif deleted file mode 100644 index 6d890012b2a629bfbe9a62ce8c105cd088d082a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmZ?wbhEHbWMg1sXkcV8Ha7nM|G(l-7DfgJMg|=QAOOiQFmbf>S5E9<^k-zS1^^ST B3S$5O diff --git a/src/main/webapp/resources/js/xwiki/suggest/suggest_img/ul_corner_br.gif b/src/main/webapp/resources/js/xwiki/suggest/suggest_img/ul_corner_br.gif deleted file mode 100644 index 6a81d6a54b6dec7f940859b0c6c410c4983449d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmZ?wbhEHbWMg1sXkcV8Ha7nM|G(l-7DfgJMg|=QAOOiQFmbf>uN1o}Ka`Qd8UPnM B3iAK} diff --git a/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js b/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js index e64139c8f..e21a48e36 100644 --- a/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js +++ b/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js @@ -62,24 +62,6 @@ if (typeof (XWiki) == "undefined" || typeof (XWiki.widgets) == "undefined" || ty Event.observe(this.viewButton, 'click', this.openDocument.bindAsEventListener(this, "view")); Event.observe(this.editButton, 'click', this.openDocument.bindAsEventListener(this, "edit")); $super(event); - if (typeof (XWiki.widgets.Suggest) != "undefined") { - // Create the Suggest. - new XWiki.widgets.Suggest(this.input, { - // This document also provides the suggestions. - script: this.contextPath + "/rest/wikis/" + this.database + "/search?scope=name&number=10&media=json&", - // Prefixed with & since the current (as of 1.7) Suggest code does not automatically append it. - varname: "q", - noresults: this.translations.noResults, - icon: this.contextPath + "/file/resources/icons/silk/page_white_text.gif", - json: true, - resultsParameter: "searchResults", - resultId: "id", - resultValue: "pageFullName", - resultInfo: "pageFullName", - timeout: 30000, - parentContainer: this.dialog - }); - } }, /** Called when the dialog is displayed. Enables the key listeners and gives focus to the (cleared) input. */ showDialog: function ($super) { diff --git a/src/main/webapp/templates/celTemplates/ObjectEdit.vm b/src/main/webapp/templates/celTemplates/ObjectEdit.vm index f2f13a11c..614a3d8a9 100644 --- a/src/main/webapp/templates/celTemplates/ObjectEdit.vm +++ b/src/main/webapp/templates/celTemplates/ObjectEdit.vm @@ -190,9 +190,7 @@ $!jsService.includeExtJsFile($extJsParam.setJsFile(':celJS/prototype.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':celJS/initCelements.min.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/xwiki.js', 'file'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/list/xlist.js', 'file'))## -$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/suggest/ajaxSuggest.js', 'file'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/scriptaculous/effects.js', 'file'))## -$!jsService.includeExtJsFile($extJsParam.setJsFile(':celJS/addSuggest.js', 'file'))## #end #if($cel_embedded_editobj) #set($cel_editobj_validationClass = '') diff --git a/src/main/webapp/templates/tagedit.vm b/src/main/webapp/templates/tagedit.vm index 87e349dba..ba265a475 100644 --- a/src/main/webapp/templates/tagedit.vm +++ b/src/main/webapp/templates/tagedit.vm @@ -93,7 +93,7 @@ #set($seps = $xwiki.getDocument("XWiki.TagClass").xWikiClass.tags.getProperty('separators').value)
-
+
#end #end From 9adb0389f188e647f36ad3654743ef2710ce2878 Mon Sep 17 00:00:00 2001 From: Chantal Pichler Date: Mon, 16 Mar 2026 17:46:45 +0100 Subject: [PATCH 52/56] remove jumpToPage --- .../resources/js/xwiki/widgets/jumpToPage.css | 20 ---- .../resources/js/xwiki/widgets/jumpToPage.js | 104 ------------------ .../webapp/templates/celMacros/CelMessages.vm | 15 --- src/main/webapp/templates/importinline.vm | 1 - src/main/webapp/templates/javascript.vm | 2 - 5 files changed, 142 deletions(-) delete mode 100644 src/main/webapp/resources/js/xwiki/widgets/jumpToPage.css delete mode 100644 src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js diff --git a/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.css b/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.css deleted file mode 100644 index 4f3405545..000000000 --- a/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.css +++ /dev/null @@ -1,20 +0,0 @@ -.xdialog-box .buttons { - margin-top: 10px; - text-align: right; -} - -.xdialog-box #jmp_target { - width: 98%; - padding: 1px 2px; -} - -/* The "Jump to any page..." text inserted in the QuickLinks panel */ -.jmp-activator { - cursor: pointer; - font-size: 80%; - font-weight: 900; -} - -.jmp-activator:hover { - text-decoration: underline; -} \ No newline at end of file diff --git a/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js b/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js deleted file mode 100644 index e21a48e36..000000000 --- a/src/main/webapp/resources/js/xwiki/widgets/jumpToPage.js +++ /dev/null @@ -1,104 +0,0 @@ -// Make sure the XWiki 'namespace' and the ModalPopup class exist. -if (typeof (XWiki) == "undefined" || typeof (XWiki.widgets) == "undefined" || typeof (XWiki.widgets.ModalPopup) == "undefined") { - if (typeof console != "undefined" && typeof console.warn == "function") { - console.warn("[JumpToPage widget] Required class missing: XWiki.widgets.ModalPopup"); - } -} else { - /** - * "Jump to page" behavior. Allows the users to jump to any other page by pressing a shortcut, entering a page name, and - * pressing enter. It also enables a Suggest behavior on the document name selector, for easier selection. - */ - XWiki.widgets.JumpToPage = Class.create(XWiki.widgets.ModalPopup, { - translations: {}, - contextPath: '', - database: '', - /** The template of the XWiki URL. */ - urlTemplate: "/__action__/__space__/__page__", - /** Constructor. Registers the key listener that pops up the dialog. */ - initialize: function ($super) { - if (window.celExecOnceAfterMessagesLoaded) { - window.celExecOnceAfterMessagesLoaded( - celMessages => { - this.translations = celMessages.jumpToPage; - this.contextPath = celMessages.celmeta.contextPath; - this.database = celMessages.celmeta.database; - }); - } else { - console.warn('celExecOnceAfterMessagesLoaded not available!'); - } - var content = new Element("div"); - this.input = new Element("input", { - "type": "text", - "id": "jmp_target", - "title": this.translations.inputTooltip - }); - content.appendChild(this.input); - this.viewButton = this.createButton("button", this.translations.viewAction, this.translations.viewTooltip, "jmp_view"); - this.editButton = this.createButton("button", this.translations.editAction, this.translations.editTooltip, "jmp_edit"); - var buttonContainer = new Element("div", { "class": "buttons" }); - buttonContainer.appendChild(this.viewButton); - buttonContainer.appendChild(this.editButton); - content.appendChild(buttonContainer); - $super( - content, - { - "show": { method: this.showDialog, keys: [this.translations.shortcuts] }, - "view": { method: this.openDocument, keys: [this.translations.viewShortcuts] }, - "edit": { method: this.openDocument, keys: [this.translations.editShortcuts] } - }, - { - title: this.translations.dialogTitle, - verticalPosition: "top" - } - ); - this.addQuickLinksEntry(); - }, - /** - * Callback called when the UI was fully retrieved and inserted. Adds listeners to the buttons, enables the suggest, - * and forwards the call to the {@link #showDialog} method. - */ - createDialog: function ($super, event) { - // Register the listeners executed when clicking on the buttons. - Event.observe(this.viewButton, 'click', this.openDocument.bindAsEventListener(this, "view")); - Event.observe(this.editButton, 'click', this.openDocument.bindAsEventListener(this, "edit")); - $super(event); - }, - /** Called when the dialog is displayed. Enables the key listeners and gives focus to the (cleared) input. */ - showDialog: function ($super) { - // Display the dialog - $super(); - // Clear the input field - this.input.value = ''; - // Focus the input field - this.input.focus(); - }, - /** - * Open the selected document in the specified mode. - * - * @param {Event} event The event that triggered this action. Either a keyboard shortcut or a button click. - * @param {String} mode The mode that the document should be opened in. One of "view" or "edit". Note that on the - * server side, "edit" could be replaced with "inline" if the document is sheet-based. - */ - openDocument: function (event, mode) { - if (!$('as_jmp_target') && this.input.value != "") { - Event.stop(event); - window.self.location = this.urlTemplate.replace("__space__/__document__", this.input.value.replace(".", "/")).replace("__action__", mode); - } - }, - addQuickLinksEntry: function () { - $$(".panel.QuickLinks .xwikipanelcontents").each(function (item) { - var jumpToPageActivator = new Element('span', { 'class': "jmp-activator" }); - jumpToPageActivator.update(this.translations.quickLinksText); - Event.observe(jumpToPageActivator, "click", function (event) { - this.showDialog(event); - }.bindAsEventListener(this)); - item.appendChild(jumpToPageActivator); - }.bind(this)); - } - }); - - // When the document is loaded, enable the keyboard listener that triggers the dialog. - document.observe("xwiki:dom:loaded", function () { - new XWiki.widgets.JumpToPage(); - }); -} // if the parent widget is defined diff --git a/src/main/webapp/templates/celMacros/CelMessages.vm b/src/main/webapp/templates/celMacros/CelMessages.vm index 03a0096ac..c5df5d184 100644 --- a/src/main/webapp/templates/celMacros/CelMessages.vm +++ b/src/main/webapp/templates/celMacros/CelMessages.vm @@ -175,21 +175,6 @@ $jsonBuilder.addStringProperty('progressMessageText', "$!adminMsg.get('core.edit $jsonBuilder.addStringProperty('successMessageText', "$!adminMsg.get('core.editors.object.delete.done')") $jsonBuilder.addStringProperty('failureMessageText', "$!adminMsg.get('core.editors.object.delete.failed')") $jsonBuilder.closeDictionary() -## jumpToPage.js -$jsonBuilder.openProperty('jumpToPage') -$jsonBuilder.openDictionary() -$jsonBuilder.addStringProperty('inputTooltip', "$!adminMsg.get('core.viewers.jump.dialog.input.tooltip')") -$jsonBuilder.addStringProperty('viewAction', "$!adminMsg.get('core.viewers.jump.dialog.actions.view')") -$jsonBuilder.addStringProperty('viewTooltip', "$!adminMsg.get('core.viewers.jump.dialog.actions.view.tooltip')") -$jsonBuilder.addStringProperty('editAction', "$!adminMsg.get('core.viewers.jump.dialog.actions.edit')") -$jsonBuilder.addStringProperty('editTooltip', "$!adminMsg.get('core.viewers.jump.dialog.actions.edit.tooltip')") -$jsonBuilder.addStringProperty('shortcuts', "$!adminMsg.get('core.viewers.jump.shortcuts')") -$jsonBuilder.addStringProperty('viewShortcuts', "$!adminMsg.get('core.viewers.jump.dialog.actions.view.shortcuts')") -$jsonBuilder.addStringProperty('editShortcuts', "$!adminMsg.get('core.viewers.jump.dialog.actions.edit.shortcuts')") -$jsonBuilder.addStringProperty('dialogContent', "$!adminMsg.get('core.viewers.jump.dialog.content')") -$jsonBuilder.addStringProperty('noResults', "$!adminMsg.get('core.viewers.jump.suggest.noResults')") -$jsonBuilder.addStringProperty('quickLinksText', "$!adminMsg.get('core.viewers.jump.quickLinksText')") -$jsonBuilder.closeDictionary() ## livetable.js $jsonBuilder.openProperty('livetable') $jsonBuilder.openDictionary() diff --git a/src/main/webapp/templates/importinline.vm b/src/main/webapp/templates/importinline.vm index 38adde8cd..1743defa4 100644 --- a/src/main/webapp/templates/importinline.vm +++ b/src/main/webapp/templates/importinline.vm @@ -67,7 +67,6 @@ window.docgeturl = "/get/XWiki/Import"; $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/widgets/modalPopup.js'))## - $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/widgets/jumpToPage.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/confirmationBox.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/confirmedAjaxRequest.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/notification.js'))## diff --git a/src/main/webapp/templates/javascript.vm b/src/main/webapp/templates/javascript.vm index a6553a513..685e57b90 100644 --- a/src/main/webapp/templates/javascript.vm +++ b/src/main/webapp/templates/javascript.vm @@ -15,8 +15,6 @@ $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/xwiki.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/scriptaculous/effects.js'))## $!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/widgets/modalPopup.js'))## $services.css.includeCSSPage(':js/xwiki/widgets/modalPopup.css')## -$!jsService.includeExtJsFile($extJsParam.setJsFile(':js/xwiki/widgets/jumpToPage.js'))## -##$xwiki.ssfx.use('js/xwiki/widgets/jumpToPage.css', {'forceSkinAction' : true, 'language' : $context.language}) $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/confirmationBox.js'))## $services.css.includeCSSPage(':uicomponents/widgets/confirmationBox.css')## $!jsService.includeExtJsFile($extJsParam.setJsFile(':uicomponents/widgets/confirmedAjaxRequest.js'))## From 0c1514c505ce14e3c6ba89bdc228a4aca4da953b Mon Sep 17 00:00:00 2001 From: Chantal Pichler Date: Mon, 16 Mar 2026 18:03:37 +0100 Subject: [PATCH 53/56] delete mappings for velocity in JS --- src/main/webapp/WEB-INF/web.xml | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index afabba75c..3ddddf667 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -235,24 +235,6 @@ spring-dispatcher /api/* - - - - js - text/javascript - - - - mjs - text/javascript - - - - css - text/css - From b6caf0e3cf788c6591884dc49aa2f5cfea457331 Mon Sep 17 00:00:00 2001 From: Chantal Pichler Date: Tue, 17 Mar 2026 09:17:01 +0100 Subject: [PATCH 54/56] delete uses of tags.js, delete tags.css --- .../resources/uicomponents/viewers/tags.css | 83 ------------ src/main/webapp/templates/docextra.vm | 1 - src/main/webapp/templates/documentTags.vm | 123 ------------------ 3 files changed, 207 deletions(-) delete mode 100644 src/main/webapp/resources/uicomponents/viewers/tags.css delete mode 100644 src/main/webapp/templates/documentTags.vm diff --git a/src/main/webapp/resources/uicomponents/viewers/tags.css b/src/main/webapp/resources/uicomponents/viewers/tags.css deleted file mode 100644 index 354b017b5..000000000 --- a/src/main/webapp/resources/uicomponents/viewers/tags.css +++ /dev/null @@ -1,83 +0,0 @@ -@import "/file/resources/celRes/theme/defaultColors.css"; -.doc-tags { - float: left; - width: 48%; -} -.tag-wrapper { - padding: 2px 1px; -} -.tag-wrapper .separator { - display: none; -} -.tag { - word-wrap: break-word; -} -a.tag-delete, a.tag-delete:visited { - color: var(--pageContentBackgroundColor); - font-size: 70%; - font-weight: bold; - text-decoration: none !important; - vertical-align: super; -} -.tag-wrapper:hover a.tag-delete { - color: var(--textPrimaryColor); -} -.tag-wrapper a.tag-delete:hover { - color: #C00; -} -.tag-add { - color: var(--textPrimaryColor); - display: inline; -} -.tag-add a, .tag-add a:visited { - color: var(--textPrimaryColor); - font-size: 80%; - text-decoration: none; -} -.tag-add a:hover { - color: var(--linkColor); -} - -.tag-add-form { - border: 1px outset var(--borderColor); - position: absolute; - vertical-align: top !important; - z-index: 1000; -} -* html .tag-add-form { - width: 190px; -} -.tag-add-form div { - background: var(--backgroundSecondaryColor); - overflow: hidden; - padding: 4px 8px; -} - -.tag-add-form label { - color: var(--textColor); - font-size: 80%; - margin: 2px 0; -} - -.tag-add-form .input-tag { - width: 16em; - height: 80%; - margin-right: 3px; -} - -.tag-add-form .buttonwrapper { - margin-left: 0; -} - -#body .tag-add-form .button { - font-size: 80%; - padding: 3px 5px !important; - cursor: pointer; - display: inline-block; - min-height: 0 !important; -} - -.tag-add-form .button-add-tag-cancel { - font-size: 80%; - padding: 4px 5px !important; -} diff --git a/src/main/webapp/templates/docextra.vm b/src/main/webapp/templates/docextra.vm index 6d5d1e1c3..e40f3daec 100644 --- a/src/main/webapp/templates/docextra.vm +++ b/src/main/webapp/templates/docextra.vm @@ -5,7 +5,6 @@ $xcontext.dropPermissions() ##
- #template("documentTags.vm")
## Creation $msg.get('core.footer.creation', [$xwiki.getUserName($doc.creator), $xwiki.formatDate($doc.creationDate)])
diff --git a/src/main/webapp/templates/documentTags.vm b/src/main/webapp/templates/documentTags.vm deleted file mode 100644 index 95f9c47de..000000000 --- a/src/main/webapp/templates/documentTags.vm +++ /dev/null @@ -1,123 +0,0 @@ -#template("xwikivars.vm") -#set($tagsId = 'xdocTags') -#set($tagErrorMessage = '') -#set($xredirect = $escapetool.url($doc.getURL('view', "#${tagsId}"))) -## -## -## -#macro(displayTag $tag) - $!{escapetool.xml($tag)}#if($hasedit)[X]#end -#end -## -#macro(removeTag $tag) - #if($xwiki.tag) - #set($result = $xwiki.tag.removeTagFromDocument($tag, $doc.fullName)) - #if($result == 'OK' && "$!{request.ajax}" != '') - $response.setStatus(200) - #set($responseMessage = 'OK') - #elseif($result == 'NO_EFFECT') - $response.setStatus(409) - #set($responseMessage = $msg.get('core.tags.remove.error.notFound', [$tag])) - #elseif($result == 'NOT_ALLOWED') - $response.setStatus(403) - #set($responseMessage = $msg.get('core.tags.remove.error.notAllowed', [$tag])) - #elseif($result == 'FAILED') - $response.setStatus(500) - #set($responseMessage = $msg.get('core.tags.remove.error.failed', [$tag])) - #end - #if("$!{request.ajax}" != '') - $!responseMessage - #elseif("$!{request.xredirect}" != '') - $response.sendRedirect($request.xredirect) - #end - #else - ## TODO - #end -#end -## -#macro(addTag $tag) - #if($xwiki.tag) - #set($oldTags = $xwiki.tag.getTagsFromDocument($doc.fullName)) - #set($result = $xwiki.tag.addTagsToDocument($tag, $doc.fullName)) - #if($result == 'OK' && "$!{request.ajax}" != '') - #set($newTags = $xwiki.tag.getTagsFromDocument($doc.fullName)) - #set($discard = $newTags.removeAll($oldTags)) - #foreach($t in $newTags) - #if($t != '' && !$oldTags.contains($t)) - #displayTag($t) - #end - #end - #elseif($result == 'NO_EFFECT') - $response.setStatus(409) - #set($tagErrorMessage = $msg.get('core.tags.add.error.alreadySet', [$tag])) - #elseif($result == 'NOT_ALLOWED') - $response.setStatus(403) - #set($tagErrorMessage = $msg.get('core.tags.add.error.notAllowed', [$tag])) - #elseif($result == 'FAILED') - $response.setStatus(500) - #set($tagErrorMessage = $msg.get('core.tags.add.error.failed', [$tag])) - #end - #if("$!{request.ajax}" != '') - $tagErrorMessage - #elseif("$!{request.xredirect}" != '') - $response.sendRedirect($request.xredirect) - #end - #else - ## TODO - #end -#end -## -#macro(displayAddForm) -
-
- ## CSRF prevention - -
- - $msg.get('core.tags.add.cancel') -
-
-#end -## -#set($xaction = "$!{request.xaction}") -#if("$!{request.showTagAddForm}" == 'true' && "$!{request.ajax}" == '1') - #displayAddForm() -#elseif($xaction == 'delete') - #removeTag($request.tag) -#elseif($xaction == 'add') - #addTag($request.tag) -#else ## display - - #set($jsService = $services.javascript) - #set($extJsParam = $jsService.createExtJSParam().setAction('file')) - #set($extJsParam = $extJsParam.setLazyLoad(true)) - $!jsService.includeExtJsFile($extJsParam.setJsFile(':resources/uicomponents/viewers/tags.js'))## -
- #if($xwiki.tag) - #set($hasTagsPlugin = true) - #set($tags = $xwiki.tag.getTagsFromDocument($doc.fullName)) - #else - #set($hasTagsPlugin = false) - #set($tags = $doc.getTagList()) - #end -## #if($!tags.size() == 0) -## No tags -## #else - $msg.get('core.tags.list.label') - #foreach($tag in $tags) - #displayTag($tag) - #end -## #end - #if($hasedit) - #if($xwiki.tag) -
#if("$!{request.showTagAddForm}" == '')[+]#else #displayAddForm()#end
- #else - ## TODO - #end - #end -
- #if($tagErrorMessage != '') - #error($tagErrorMessage) - #end -#end From e1c43f1c31ae53b4a0447d3a21e8317ee3d4e544 Mon Sep 17 00:00:00 2001 From: Chantal Pichler Date: Tue, 17 Mar 2026 09:51:37 +0100 Subject: [PATCH 55/56] Revert "remove font Terminal-Dosis and it's use" This reverts commit ceadc5fdf074c67e7448c4ff13a1b331fbdbcbdf. --- .../ImageAndFilePicker/ImageAndFilePicker.css | 1 + .../resources/celRes/celTabMenu/tabMenu.css | 2 +- .../webapp/resources/celRes/celements2.css | 1 + ...inal-Dosis-200,300,400,500,600,700,800.css | 112 ++++++++++++++++++ .../Terminal-Dosis-normal-200-latin-ext.woff2 | Bin 0 -> 7008 bytes .../Terminal-Dosis-normal-200-latin.woff2 | Bin 0 -> 13580 bytes .../Terminal-Dosis-normal-300-latin-ext.woff2 | Bin 0 -> 7280 bytes .../Terminal-Dosis-normal-300-latin.woff2 | Bin 0 -> 14092 bytes .../Terminal-Dosis-normal-400-latin-ext.woff2 | Bin 0 -> 7480 bytes .../Terminal-Dosis-normal-400-latin.woff2 | Bin 0 -> 14180 bytes .../Terminal-Dosis-normal-500-latin-ext.woff2 | Bin 0 -> 7412 bytes .../Terminal-Dosis-normal-500-latin.woff2 | Bin 0 -> 14068 bytes .../Terminal-Dosis-normal-600-latin-ext.woff2 | Bin 0 -> 7364 bytes .../Terminal-Dosis-normal-600-latin.woff2 | Bin 0 -> 14084 bytes .../Terminal-Dosis-normal-700-latin-ext.woff2 | Bin 0 -> 7280 bytes .../Terminal-Dosis-normal-700-latin.woff2 | Bin 0 -> 14188 bytes .../Terminal-Dosis-normal-800-latin-ext.woff2 | Bin 0 -> 7240 bytes .../Terminal-Dosis-normal-800-latin.woff2 | Bin 0 -> 13824 bytes .../webapp/resources/celRes/imagePicker.css | 2 +- .../tinymce/wiki_editor/plugins/core.js | 2 +- .../webapp/skins/albatross/screenlayout.css | 1 + 21 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-200,300,400,500,600,700,800.css create mode 100644 src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-200-latin-ext.woff2 create mode 100644 src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-200-latin.woff2 create mode 100644 src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-300-latin-ext.woff2 create mode 100644 src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-300-latin.woff2 create mode 100644 src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-400-latin-ext.woff2 create mode 100644 src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-400-latin.woff2 create mode 100644 src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-500-latin-ext.woff2 create mode 100644 src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-500-latin.woff2 create mode 100644 src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-600-latin-ext.woff2 create mode 100644 src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-600-latin.woff2 create mode 100644 src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-700-latin-ext.woff2 create mode 100644 src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-700-latin.woff2 create mode 100644 src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-800-latin-ext.woff2 create mode 100644 src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-800-latin.woff2 diff --git a/src/main/webapp/resources/celRes/ImageAndFilePicker/ImageAndFilePicker.css b/src/main/webapp/resources/celRes/ImageAndFilePicker/ImageAndFilePicker.css index 62b15b823..7c0e6496f 100644 --- a/src/main/webapp/resources/celRes/ImageAndFilePicker/ImageAndFilePicker.css +++ b/src/main/webapp/resources/celRes/ImageAndFilePicker/ImageAndFilePicker.css @@ -1,3 +1,4 @@ +@import url(google-fonts/Terminal-Dosis/Terminal-Dosis-200,300,400,500,600,700,800.css); @import url(celRes/google-fonts/Open-Sans/Open-Sans-300italic,400italic,600italic,700italic,800italic,300,400,600,700,800.css); .filebasePicker #attachments { diff --git a/src/main/webapp/resources/celRes/celTabMenu/tabMenu.css b/src/main/webapp/resources/celRes/celTabMenu/tabMenu.css index 96f6b1b28..293a7697f 100644 --- a/src/main/webapp/resources/celRes/celTabMenu/tabMenu.css +++ b/src/main/webapp/resources/celRes/celTabMenu/tabMenu.css @@ -1,4 +1,4 @@ -@import url(celRes/google-fonts/Open-Sans/Open-Sans-300italic,400italic,600italic,700italic,800italic,300,400,600,700,800.css); +@import url(google-fonts/Terminal-Dosis/Terminal-Dosis-200,300,400,500,600,700,800.css); /* tabMenu.css: * tabMenu layout * 2008 - 2011 synventis gmbh diff --git a/src/main/webapp/resources/celRes/celements2.css b/src/main/webapp/resources/celRes/celements2.css index 2ca3f8fff..51637aa28 100644 --- a/src/main/webapp/resources/celRes/celements2.css +++ b/src/main/webapp/resources/celRes/celements2.css @@ -1,3 +1,4 @@ +@import url(google-fonts/Terminal-Dosis/Terminal-Dosis-200,300,400,500,600,700,800.css); @import url(celRes/google-fonts/Open-Sans/Open-Sans-300italic,400italic,600italic,700italic,800italic,300,400,600,700,800.css); /* Floating Windows Classes */ .sheet { diff --git a/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-200,300,400,500,600,700,800.css b/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-200,300,400,500,600,700,800.css new file mode 100644 index 000000000..4e3d9b384 --- /dev/null +++ b/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-200,300,400,500,600,700,800.css @@ -0,0 +1,112 @@ +/* latin-ext */ +@font-face { + font-family: 'Terminal Dosis'; + font-style: normal; + font-weight: 200; + src: url(Terminal-Dosis-normal-200-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Terminal Dosis'; + font-style: normal; + font-weight: 200; + src: url(Terminal-Dosis-normal-200-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* latin-ext */ +@font-face { + font-family: 'Terminal Dosis'; + font-style: normal; + font-weight: 300; + src: url(Terminal-Dosis-normal-300-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Terminal Dosis'; + font-style: normal; + font-weight: 300; + src: url(Terminal-Dosis-normal-300-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* latin-ext */ +@font-face { + font-family: 'Terminal Dosis'; + font-style: normal; + font-weight: 400; + src: url(Terminal-Dosis-normal-400-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Terminal Dosis'; + font-style: normal; + font-weight: 400; + src: url(Terminal-Dosis-normal-400-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* latin-ext */ +@font-face { + font-family: 'Terminal Dosis'; + font-style: normal; + font-weight: 500; + src: url(Terminal-Dosis-normal-500-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Terminal Dosis'; + font-style: normal; + font-weight: 500; + src: url(Terminal-Dosis-normal-500-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* latin-ext */ +@font-face { + font-family: 'Terminal Dosis'; + font-style: normal; + font-weight: 600; + src: url(Terminal-Dosis-normal-600-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Terminal Dosis'; + font-style: normal; + font-weight: 600; + src: url(Terminal-Dosis-normal-600-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* latin-ext */ +@font-face { + font-family: 'Terminal Dosis'; + font-style: normal; + font-weight: 700; + src: url(Terminal-Dosis-normal-700-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Terminal Dosis'; + font-style: normal; + font-weight: 700; + src: url(Terminal-Dosis-normal-700-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* latin-ext */ +@font-face { + font-family: 'Terminal Dosis'; + font-style: normal; + font-weight: 800; + src: url(Terminal-Dosis-normal-800-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Terminal Dosis'; + font-style: normal; + font-weight: 800; + src: url(Terminal-Dosis-normal-800-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} diff --git a/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-200-latin-ext.woff2 b/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-200-latin-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..bf25e518e81c7a73d3f6c6a96f4d39df6c3cb582 GIT binary patch literal 7008 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 KaPA@B6#xLmJmgmZ literal 0 HcmV?d00001 diff --git a/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-300-latin.woff2 b/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-300-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..50543d80fad2430d7bed0870c4446ad137290ad5 GIT binary patch literal 14092 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 K@(%_B0001d<~D)= literal 0 HcmV?d00001 diff --git a/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-400-latin-ext.woff2 b/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-400-latin-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..14d2d3d092d2bb8f017ad4e4ae1b9eaa132e40cc GIT binary patch literal 7480 zcmV-89mnE#Pew8T0RR9103A304gdfE0A`E;036`}0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-400-latin.woff2 b/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-400-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..49700e046400018d375e8cef4281fe477b07d021 GIT binary patch literal 14180 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

O_AzPjS_M^*=y?U zG6X;X_@LE*jsSOxLWf`-W1KDUe2(zZ4oShn-oJtC*6K9K1M&f)F&7ru|Ac>c0ZJQk zIkP@rC8UcKvB_S(PZY1qC@3m4l*$R@Pn712(HIqSg~mttNS)DI>Iyk3b-=nl3dx07 zF7ojjnd(g;%ejWtW+?_p3MQQZSudcRG#uu0P@_NG>JJ+sk}J_7Fxb}@F6iw8_#1FJ zPSmb!TiG-a1t(E<#;*N!`np~F(*gb_T!s?`OPg9Dvz!3i%^# zuGah#k+5X@o(wR`%vkl|@^}3-xDUhU%zbIzOLHXqAj7-j-N!ymXQQidY|g^h7QEJh z!;JuY8?MLsxudn(H*~ae}ha5 zPBR9%V{G{M?q87UK&P1o?xJDk+m|!d+!ff;h!SlcIr>_7h`f68R}#e3g=9WNMktNDwCx-h#77uND%D1>_qI4iIJ?Ti8lb&mJSmeDs?60)&Iz`3u{5SY9V335 z0Wx0Q?@bZ;h5JD~rPO((D11VV6Q^d!< zH~K@6*`>i|;f_s0sYJLV#qbcFgxDmyKn!wiEY~CHg1oJz+^^Xz*C=AQijKIr=h>{X zBTMtGD_$>Svd=fnuZgYssdro~_W9w2Iat≦5@!g`I&yAbK0^$D)?)vmdoD!?6aG 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 #IQb>_lUbM z-`kAdUSIW*d{ewz5ag$FeJYiL@FX~A~(H6X9_%RF{bnGoCOB!hgqxE#lUh7n5KPCn8t8hbWLcCPs;VB?{j z0m-v~Vty7o^L?9l$mcfM+{$gyz$Uog{@~~z`9lNwJ&9}5t^Ral>4ri`xl7T0xCe`B zMMK%<0KiYtM?VD;^i$zx{4|TL@Y6}O14e5BV78hGt^_p5(Bf`0Y~W-I}%SN$H1l z=g%%;NQa1Csfsjc)UB6ak3J13fpipEzc!Q>o|A~xnN3*>WsWz}GhC&~Vmxu)nLZ1P z(KdN5Unx1E~FeOuW7tUR6z2xKUP7i|~KTEFmY6Ol2*# zNeW7;b<|{qo7E>tmLipwPMV1SfH5*LOJ|WGQMC+6cSdT zP?2J@lqglE+-w!*s8pp|jaqf;HADw{t@4;RZT7R()_BSehwY02o^;hp8)8ye;F;K9 z)EVE#0TYh+-EaP|$8jI~&cgr15 z=+vQ0k8TmW^y=4Vz@WK?%roCj3k+LmktG&;#coTDSZ2A~?t0A^PMP$jZ(Q-5=e^`* z?|H$C-uJkpKJb>ek@^M&p`hSt3Z!5ZoDxOhQg{@C!Uy*#0*a6lO)n@5g;;YV9eTaq z71y-ugXbxS5n4^H=}lQD81)%u`adf<%I=M{tRp|l8JgdF85`vMMQh?G+TptM%5m#K uw6$X%h3oAHFXv@73=H(npWDZY@NdM!Do1-9dIO9Y*}c7x?zb)j0002}QHgf| literal 0 HcmV?d00001 diff --git a/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-500-latin-ext.woff2 b/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-500-latin-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..06eb923b591ad1771ae4f129d692f320a599c610 GIT binary patch literal 7412 zcmV*0D&A43<`mmSovNHf+PR|HUcCAghT`&1%y}!iwzs*Qx)TwrSyEt zUPMuAMfNX;{+Q)#H9T|cTy8ip( zGRQrF{AFZ+hPmZUc~hpHyh!@4MOdeg=%v{yHzV(y`VkuYB$wy^f9%^n_x%xTE~`%( zRwr5|s-+-SH3dR~P`nW;l{-9b^WPmu-rc)9ssxPWz-mGT<`hN6g_{_)0(+S*I)Al4 zYx>hgxnJR;&3~JW0{B1Dt!9#Y%R=|!*10AOc=uXVK(pH>En+3)%q;TnP5+nvQ63s? zdx7mWbyA>|!)0wQW87W=5VQxGi8<}Yie={l?i2v*Eu75P6|a_oy02kc|=5#^I2 zDZckCTcJA_kdp(TtvF1bIugtPFkQD!H;o;K!t;5`FXOzMixsQlnEyh>bO4niTD1sP z3~RP>X~1cx8TKOccYK*@kbG9VWh*)zC6rJ?)_8a9WlXVmr}iC%kc5gBkSO%L&H`8j zKtUijKp=p5dI^w6*Slr_0Sw@PQT6b4M@s?KUwdFsz?l7DmPJ6P4#9w#Y3{GWC;*B1 z^msaXevr-d{+6UvDOP?K$`=5|UrDI`IBkFT#c(eYaG71u3UYfXrq~HUCc}nIhqR=*03Y28hJ^hXkTc$6=A93k>NA*i>O*r?5{}PaZx)A+7Z#-k@PG`$TmNzF!U3%GQ zUcKtGcK*FJVMLT+y*aHYO=bSq*4{mRCywQMZ<=2Lo9S6vuIijXRdVpBbXp%Dv3{j{ zm@mw((p&g{+#nXJ_}ebIhizyHbrsm*w4K*W)y#W>+dx_%%4#*HZXCMtD!d`qtT~ma(`0` z+{u=MkbS2NmB`_-7DY)t_2%wy+Jn^{&BB9+5Th+BjU|%4Q{&FDdlB}Kw|lnca6OXw zj@vj3Mti|w#L{wgQi@y_T26kdy!ilp<&+2TqBUKnY1IdU!pk8{iPpg0`DV2}1{jcli1l;mxAPtsl1v&IbpyX9T0{UM zLxv0)GH~#Yo2cIY)B1s#009C72oPXG$F!V?E$Z%zm2_7nl-f!)d=rEeMFj!!Aphr2 zKHkomaweS+*%#~%-O~;w{-h|=UTVzS&=0$88Kfu!&I#d_+@hkIk^+;fss#h2N$R>)dzT9 zHlII|JQ4sjJP!JHtvtZ_4D9$`UcKh405)KMALEQl0GJH$mjQSOke@XK*gurWz$qDt z`Iwcj)Gita1T4iGcgizAn=*=4={0_LStAC+s0gkgK+ZBIm2IAsvdzN&|AtE6i{U_l z|9@F(Xz5f1M2qIgwV9*{l!1>0T!!_j`*n9@;{RZ+f1b9PZa4Kl^c9?S?M(TPD zLR`Fpl(?!n*6>A5ksfMmguxV$spJTGU>gEVqKJY8lJ$j<)!IM)sI)0w8aCC(Y8n)1 zq>zRRYQn<8I*IWje>D~7S{cVXO1YwKQ&pIUYLHc6242C;Q71zKHV8izsrJuHSTwWF ze%Wn_h>26uKBeMIffA($Fi4&)>af$5F&aR`HaRgevw*~F#C2_E?Z!VyQ22DfvHh{h zjs?3c@{jCxu}`FU+SD6ckyI)<)rn)j@)~j7rI|2JmDI+|p{DdJNFbDu*u?hJ4_+Fo z{w35z_yL3wey*yajMEDGtxZa28_Yo=v5R~eq@HDmM%mZEwZONlT6*9b#XEg!s)f2s zVppta?1^xf>uGVX&!grP_iczGi}_D9KYD}(Nw{oLI5%nLBH?sYY>?nO)}bub`KKqt z`V$i1gDfse(K|Y7YKS692G3v&<8o^Y^TH6*quUH}+yc%5eC!fJm?_Z~r>0~GjYOi7 ztOPjCwAWD#QgHHob8%m>-C$Fd6uUavkr%o)jZn3~lHwJB@Uq$|#n_18BDmufI&#sB z@;Ai-A-y^)ar~dC_k&c8g*IpJE~OZd;^B7bJAIioPE}Ucqc(|pww5H6m#lTkDj0v2 zQ%g9?U@dV*7S%=tszOVt>2sG2JfzBkPXng3mIEc5$gXQcP_bn{@W(Xl)zld?Vu(TiDJM$$xFM~s{@7d;7B z5(Hh4?DV zI!dhlk(w|?LP#@qX2b#wFwGgkl%)Nh>LIDWx^fcn)Q-cwNQBH4*yFp@ys77AFq)tlld zE32nZ;&;pT1kwhGM$5&I8$-Sa0FVtR4qN{!Qrc3Z5W1Ij4prIaF8)awDZv=nk4Lq-9O`r0@{PF{N3jkUc@OJ<$xf z8~S|8RTb>QhaiIhPbj>KSK&e5!b&EE;aWp1sNwNb7gAvhKu}-^MW26w1&5c_Q3B(Y zC`Mv#0#>9V514k#iX=Snrr=&WT{0Ca%GBneFw-+fk})+~q&b}vxb+dMz*l0CwL2y; zjxeOBeSlJzJWu_fBWc7Dk6~)|XRL#RWwqKQ?v3^I!;GpOmCq6;JD>9L$g6Inf zPMn($eqLAmV%%y_tva8~L$7}83IDLlz+U)myuuGYIAgZ@m!D*Oks|p$gmZ|MBu9<% zZe&GE6IhH`sG9hCp8(^}Mn!h@gdfa9GA*8C>-dCk0WcEWCeKM1s~5&jJVmNjoh-^4 zE^fl;52qFFiViXa;f-=y^`ia9kN=+6omi`2VfT8zTfQSAAU6aKd^23$ZG#`D$%uvP zPS!bY$u>8=8SzXNNh0XQ3)glQ(IP62-L0rXCiaTzttUULQvZieGYF^hm}Mg2_sy*a zt;R_oq|Q2~%(#|;b|`XtZ>I9O<3waR6wkA_IokHpupFSM?DHLK{A)hnfpQSYl_-7j zTln!?d@3=Ae|VbuKXQ;@)HE?j@)lj2(F-(lOM7!Vtg@suPkP)F4ir&}38v)wni&;< z42bD6GR9d_ku%1b?uHnJn+S6KiN^nm+!`KN>IhE>*KPWwUrYWeOt9pIWaHk9y~bp# z+Z}Mb1tiOiRmQ8}7>Ktpu5DKaqDjF*a#TP`(Z;iek(v?lVpRhB>))FDPn(M38)oXlJN8 zB8Dn9n~U1IeZ{QPZB8h3s1~I-ZD!W#GSAo`yCRqU9hcBp1MvhLlR2LNbUwU@XX@>F zXu^?6ymvGb`Dy-X!EdT>;4KUmJu;QJs2(7u)-!pR)yLyENq8NPS6lQw1x333Fi17R zVT!&-rajw3-l51_aL;HOd5@-sVIvj9ZiW)d4+X@$)>hIL^p&=^dUY4SS|S_LrYB$AH|1`AMGn|^*5X#(`sA&vhT)tt z-(;t?_)a3lJjo#RnA3Gpg_*et=zbKONTGted5G8hY?)b_x182qj@!WeD(xIT9YgGG zwv$_9#3DV&2*mV>?Om-c_STmv?6O#b=;&QSf){VFxfkBj-XYJy>*U(@?$!_RoUzSF z68qDTP4bk5o2;y6ZJE(iH?gdMr?W-TNd(1LT5n|;-A$9cv2b0~pcC_wPT3FfuF#kl zyWH4eSv$U8Jwv!5)$T%P;@TyI(rv#6{DH@Px|$^Ld* z0h-+Eyck7_oqKQI2@l)f)1ma6Ln>hp5@@dNVntaC zb@_A};#-pVhR{6aRRN!Bz16Q;OUzc&de$z?1gCN4RBtS=cb?3F3 za)Vm6i-*4_44bRfdxzW?cX^)Q;631q+(6bGjn#Bl>?ap6;sxaXCuxjyE*wLeU^mO* zqNb%y6!BWP6!r;v>mkX)m z6tSXj_R)V`eClT!uG#mi&(k-{QoSAEn6vv&`^(V2x2J<4zt?|H=2JmlXI0_6Vzi>* zZUPxm*_g^(25YN-uFUFXkLnO}0WQn+19@G#Q>UAG{l1!{|x7d5ng_sHuv7<$cCAB=_O*GR! zy&8f6)pTi}XtXhH3^As8PTb_vCB7!qwo=X-!gG*s55l!X&?zu#R#rSb!iGSob1ST1 zRhFAp99gG+(B0Z@&Oo9ZUA8S7C050EO|i21T_L#c6X8RZbafo)ZZB;f+ta~NWptQ8?>tMJ3rOCYiqPp(fWrFH|rEylx)T3K;o0VyN z`jJ=$wncPC_0v0~V%DO*C5!tOWqmgkc8RVfEli;$-b6;}BS}+oak>3gjMZ)&0PK`2 zK^kNMZNB`T?W_xSFrnJRDxyGzVfN$%jPKO7uiRk6KLJB4Jsk>Pz49Q&?#atdcNWx! z2V$I+&Xnk}jwlxsn-?;L!F(F4h)m8MlbFUjGXloicxRxvwYRNd{On@EfUy(*taVOO zKnQ;5iAs83W0bojE`@^4Eb~>QRvTo58Da%m6Z@G)8|G$QDt%I3waZ&jYpt*W)~uB| zV>bl#u)_0@N%?iHtaMNLoIAcCpR(A-%Bh z-T>&0{J)>=UV9_GqN@Ggo@Sfb%@8kA_uzJTkD~9xgTWFy5Gom1WHv`GbL+uV%E9FOqP8=wvA) zY}eQe$%?MgLyH8A(Bw;f1J-EZ9Qb{*YU%fN%k70luHSWW%<#Eu?`{34rtBa`8osI6!bqx;o0rYkQG22tB!l8$QA@(pmCUU!52*%tqeY z*>=|AfFgbM4ak2#GpaQ@a#dthUu1NfUydo{m|TX)6)2sZ=2QrJ;yTXwcjRQWVMP`9 zMaFK)uw5itr($5#_~fdn52@!i+E&fkfHw5BlFyq{+_bqUBVYCJaDJp0w08jdRmc&m zd?(5$Pj8D1Z>ybtyxgZ2k3b&!!HzZY=4n+Pzh|z0&4)W=PtLvr{k$e$p)j$mcBXd{ z+n`i6OiY~R^UB0hN|3&LU!7W07l@o}YSgK_cJ0o7{l#zKdq}@RaTxJS=l$pWFGY+{ zf{d>giTO`Ix+C0(Va^#nFWA!&e}zu}c~-V$V$Z~YgmE$4i0#{qB|2xWRd!t+9T}lC zS2n`ZqgzsoUz!M*x3R6~-%%q|l)b-vWm-*O47tGJH^5=TFbwHbaHG8{hveyb!9Hy9I_}jBJ-&qT+8U4)+Gn``8&^#0){#PC4-7xg5IPzZAollcK$WIG*CHwR64c1pAO$f>$Q+1VOuDlkOL!*t`|F;+Aw=6Y&mP;XK;F~B* zd-C;oT=+9n#o;ouAKs4G{l|=@`-DYV zruCnW#5I#Mnx6xt_>y8T?EH`NlIpMNu~N@Z@jEKwHMLgUK8?lPAny=Zc~|a76e%S* zouSO{C9UknZ!pJyNNdF+bH+K;YSIicKYA%@1(`J`4`iA_=ASM^#)D_(!@s(&(SbY5 z^xyA(l4T#lk^XM(5Wa|^H{wIx+zS$|_(C^#AGw)kmXQ0px$jnr?DY>IS+(-G>sl)3 zpCD}f3h=eBaSGtuT1D_I5==QB17@LQ@ipGk1&Eu~6e1S%CUvaZp#6Vj#m ztWIfKzxkjJEiAl>j8!0rSg?~>i6)KGtJ`#bxdUbnn!zA(!(FYc(usu)QsLv3Zc(R0 zrJ!k=%+RIH3_%IX)TuX3kjHc(b*7m{lG>o59xa4WNlThh=a$7F3NR0s#41r@yE<)F zr=XBoti4*a>bh%;2C)o{6BzW@Zb*7Vs@;(EhGaA(AZ*@7T$I%yXu4PqsW<0$X`SrT zq|<-7$5`B;Xe9sxQt6JS(=|CWnuW?Put(JX$G-tm01XGh5H7+)_=o@zf~Vlw9dI;S zU78rZ0b(R3AtfWHproRvp$!CO^uibznS_fFDN3{$vEsx_2(e*VSS3o5EJdm`=`v)> zlAV=xa^%XB&jx|Q;0PoNjltsZ1R{w{q0;g=EF0TYGMFqjhs)y&gd(v-Dw8XeDzzqW zXmxr+ZrjrtO=gSLW(N+Z%kA;{{8?OyOI;J5xw2Xdh}_aX=fR{L3S|2iB%(+<9tyti z+sLiO!5Xn|`y2RG*#=KW|-+CY6yf zO$LssZbMb<5 z^)nZIIlrQBRERw8v5;73bc?QWf+e2O%FvP03-?TJ$u*70()pu&>}mdelmE+8RfQ_= zUJI#(R=4U}RcK__mL9c5=(`ot4Lhq_ckQKxzC4|~+i-)&@PONJL1}5cS!ihqg*6*S z3qcu;h&Q7tkxX!zKtIYlHZi)HxQHApa`Hlbtt3iDL literal 0 HcmV?d00001 diff --git a/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-500-latin.woff2 b/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-500-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..340461dd434b0df7fa8b9882581158e40ad919bb GIT binary patch literal 14068 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-600-latin-ext.woff2 b/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-600-latin-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fad23172aa413db67194d94d0ba3140a1cdf4189 GIT binary patch literal 7364 zcmV;#96RH8Pew8T0RR91035^s4gdfE0A-K>032!n0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-600-latin.woff2 b/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-600-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e3b66bb1fcc3d4ac8dd2eeaa7e2434539fe9de20 GIT binary patch literal 14084 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 CfgBA0 literal 0 HcmV?d00001 diff --git a/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-700-latin-ext.woff2 b/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-700-latin-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ec86308994e0d6569f3163eb4cbb0884f0dbc730 GIT binary patch literal 7280 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-700-latin.woff2 b/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-700-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2b907393df4999cdccf4b6a5ad24c392c6334075 GIT binary patch literal 14188 zcmV-yHYW05=c-0RR9100000000000000000000 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 C4>^GV literal 0 HcmV?d00001 diff --git a/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-800-latin-ext.woff2 b/src/main/webapp/resources/celRes/google-fonts/Terminal-Dosis/Terminal-Dosis-normal-800-latin-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..46d7096559efc10e35f8361184745e2bc35c341e GIT binary patch literal 7240 zcmV-O9Jk|lPew8T0RR91031jF4gdfE0A$br02}ZC0RR9100000000000000000000 z0000Q78{jx92f>*0D&A43<`mm2>5#of+PR|HUcCAghT`&1%x^WiwzqoQzhe=rFa~G z&<_(u$sSE)|Nkw46B)KR1MBo&ffJFWaN@Wy-gc$i#<*<2Gqnp5@6Ih)kOgM}cX>wA z-%cB@ZkjunatWuWP*cbs>I@bxTb-gK+-ZsWim83x`p={MsaKCiXT|f%Im+dm9HFsK za*fiZd#BR_fGiV8CdT(09>~B7Q{|#hRU}1|GLs%E9-wV@RO$}y4i4@JVLDN)h9itf z7A%aPI{g3^wvW$V6Y-7v<*rT@o^=`r4eFtL!K!mY<(ApSryM+=y z6jTi9OjqAqp8`67Qz3-I22BH*s=l-1>^wH*7Dk6 zA;PKC)OBxPOD#gon4TuvEQ)>}o$q~TBTPNB)OjhDW0}eCiC<${W6GC!e(ffdEszRf zH;Sh}CJ4Y_I66fTuX|et=m^S?yW>m@8VrD|M9J-W%I}5oOCCc3+IMQApmp9eXZ`gvc(>}+qlm9Jk4TnOzNT9mI4O*=D8smxRFw^fXqueQ=I)_e^w;7m!{CcZxv0*IT zWNWB$zDC`p(%l8}9|QHEJKlN-LteY@y|3Cc*Gms`L1!c{e7Qq*+U&S(j>2u9wLzyQ zn&XknO3y`_fA?U>Y6)6aGP0X6$HKT5bA#Jfgg$LY1=+6UKJV?7yTsI^P{O;w77uI$ zGUvg2w7Y*S2~NBCYdn?(dPi*Z!tSyrcRSpuLk&5s#WhHI>saaUog22jZSsm!yQ~{M zC4fP;gXOBoBakbSSL+eaS?PKwSJNC;=gHOdr_BjvfNe<*lX^)8#PY|nx}8xqAuOkErfr*I zID8WoQyJip3OPyvP#}s_g+R+^EO2td)_}q(bL=N)9F2I+LqY=;oHaEUKqJ{n(1fx! z(Q=<$$J0d5d+G+hwvGHu0!_?

#S2IZ6Rg;6$W8^MnfnsBD-sph<-Sgo<5&q*JdD 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 W`+0qB3ItPU&8{&N>Y@0?m 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 Ci>>wm literal 0 HcmV?d00001 diff --git a/src/main/webapp/resources/celRes/imagePicker.css b/src/main/webapp/resources/celRes/imagePicker.css index 43d7936d5..a1aeb79c6 100644 --- a/src/main/webapp/resources/celRes/imagePicker.css +++ b/src/main/webapp/resources/celRes/imagePicker.css @@ -1,7 +1,7 @@ body { background-color: #FFFFFF!important; background-image: none; - font-familiy: "Open Sans",Tahoma,Geneva,Helvetica,Arial,sans-serif; + font-familiy: "Terminal Dosis",Tahoma,Geneva,Helvetica,Arial,sans-serif; font-size:12px; font-weight: 500; letter-spacing: 1px; diff --git a/src/main/webapp/resources/js/xwiki/wysiwyg/tinymce/wiki_editor/plugins/core.js b/src/main/webapp/resources/js/xwiki/wysiwyg/tinymce/wiki_editor/plugins/core.js index 9272d1838..1b94db7c0 100644 --- a/src/main/webapp/resources/js/xwiki/wysiwyg/tinymce/wiki_editor/plugins/core.js +++ b/src/main/webapp/resources/js/xwiki/wysiwyg/tinymce/wiki_editor/plugins/core.js @@ -893,7 +893,7 @@ WikiEditor.prototype.getStyleControl = function(button_name) { case "fontselect": var fontHTML = '