Changes for page Main
Last modified by Administrator on 2026/02/17 22:15
From version
3.1
edited by Administrator
on 2020/01/07 18:45
on 2020/01/07 18:45
Change comment:
Install extension [org.xwiki.platform:xwiki-platform-appwithinminutes-ui/11.10.2]
To version
9.1
edited by Administrator
on 2026/02/17 22:15
on 2026/02/17 22:15
Change comment:
Install extension [org.xwiki.platform:xwiki-platform-appwithinminutes-ui/17.10.3]
Summary
Details
- Page properties
-
- Content
-
... ... @@ -66,7 +66,7 @@ 66 66 #foreach ($category in $services.query.xwql($categoryListStatement).execute()) 67 67 #set ($categoryDoc = $xwiki.getDocument($category)) 68 68 <li> 69 - <div class="category">$categoryDoc.plainTitle</div> 69 + <div class="category">$escapetool.xml($categoryDoc.plainTitle)</div> 70 70 #set ($formFieldsForCategoryStatement = "from doc.object($formFieldClassName) as field where field.category = :category order by field.priority") 71 71 #set ($formFieldsForCategoryQuery = $services.query.xwql($formFieldsForCategoryStatement).bindValue('category', $category)) 72 72 <ul> ... ... @@ -81,7 +81,7 @@ 81 81 #else 82 82 #set ($formFieldIconURL = $formFieldDoc.getAttachmentURL($formFieldIcon)) 83 83 #end 84 - #set ($formFieldIconRendered = "<img src='$formFieldIconURL' alt='$escapetool.xml($formFieldDoc.plainTitle)' class='icon' />") 84 + #set ($formFieldIconRendered = "<img src='$escapetool.xml($formFieldIconURL)' alt='$escapetool.xml($formFieldDoc.plainTitle)' class='icon' />") 85 85 #end 86 86 <li class="field"> 87 87 $formFieldIconRendered ... ... @@ -97,10 +97,12 @@ 97 97 #set ($fieldURL = $doc.getURL('edit', $escapetool.url({ 98 98 'xpage': 'plain', 99 99 'sheet': 'AppWithinMinutes.ClassEditSheet', 100 + 'form_token': $services.csrf.getToken(), 101 + 'template': 'AppWithinMinutes.ClassTemplate', 100 100 'field': $formFieldDoc.fullName, 101 101 'xeditmode': 'text' 102 102 }))) 103 - <input type="hidden" value="$fieldURL" class="data"/> 105 + <input type="hidden" value="$escapetool.xml($fieldURL)" class="data"/> 104 104 </li> 105 105 #end 106 106 </ul> ... ... @@ -188,9 +188,7 @@ 188 188 ["#pageLink($sheetReference)"]) 189 189 </span> 190 190 #else 191 - <span class="warningmessage"> 192 - $services.localization.render('platform.appwithinminutes.classEditorMultipleSheetsWarning') 193 - </span> 193 + #inlineWarning($services.localization.render('platform.appwithinminutes.classEditorMultipleSheetsWarning')) 194 194 #end 195 195 </dd> 196 196 <dt> ... ... @@ -274,6 +274,7 @@ 274 274 * Displays a configuration property of a class field. This macro can also be used to display a property of an object. 275 275 *# 276 276 #macro (displayFieldProperty $property $prefix $field) 277 + ## This 'displayFormType' property only exists for boolean fields. 277 277 #set ($displayFormType = $property.getProperty('displayFormType')) 278 278 #if ($property.classType == 'Boolean' && (!$displayFormType || $displayFormType.value == 'checkbox')) 279 279 <dt> ... ... @@ -387,7 +387,6 @@ 387 387 * Display the edit class form. 388 388 *# 389 389 #macro (displayEditForm) 390 - #set ($discard = $xwiki.jsfx.use('js/scriptaculous/dragdrop.js')) 391 391 #set ($discard = $xwiki.jsx.use('AppWithinMinutes.ClassEditSheet')) 392 392 #set ($discard = $xwiki.ssx.use('AppWithinMinutes.ClassEditSheet')) 393 393 #set ($discard = $xwiki.ssx.use('AppWithinMinutes.ClassSheetGenerator')) ... ... @@ -437,7 +437,7 @@ 437 437 #try() 438 438 #set ($discard = $copyAsJob.join()) 439 439 #set ($copyAsJobStatus = $services.job.getJobStatus($copyAsJob.request.id)) 440 - #set ($errorMessage = $copyAsJobStatus.logTail.getFirstLogEvent s('ERROR').toString())440 + #set ($errorMessage = $copyAsJobStatus.logTail.getFirstLogEvent('ERROR').toString()) 441 441 #end 442 442 #end 443 443 #end ... ... @@ -617,6 +617,10 @@ 617 617 #set($discard = $sheetDoc.setParent($doc.documentReference.name)) 618 618 #set($discard = $sheetDoc.setContent($doc.getRenderedContent($sheetGeneratorDoc.content, 619 619 $sheetGeneratorDoc.syntax.toIdString(), 'plain/1.0'))) 620 + ## We assume for now that the output produced by the sheet generator uses the same syntax as the code of the sheet 621 + ## generator. We have to set the syntax because the default wiki syntax (used when creating new wiki pages) could 622 + ## be different than the one used by the sheet generator. 623 + #set($discard = $sheetDoc.setSyntax($sheetGeneratorDoc.syntax)) 620 620 #set($discard = $sheetDoc.setHidden(true)) 621 621 #set($discard = $sheetDoc.save($services.localization.render('platform.appwithinminutes.classEditorSheetSaveComment'), 622 622 $minorEdit)) ... ... @@ -642,6 +642,7 @@ 642 642 #set($translationsGeneratorDoc = $xwiki.getDocument('AppWithinMinutes.ClassTranslationsGenerator')) 643 643 #set($discard = $translationsDoc.setContent($doc.getRenderedContent($translationsGeneratorDoc.content, 644 644 $translationsGeneratorDoc.syntax.toIdString(), 'plain/1.0'))) 649 + #set($discard = $translationsDoc.setSyntaxId('plain/1.0')) 645 645 #set($discard = $translationsDoc.setHidden(true)) 646 646 #set($discard = $translationsDoc.save( 647 647 $services.localization.render('platform.appwithinminutes.classEditorTranslationsSaveComment'), ... ... @@ -661,7 +661,7 @@ 661 661 #updateAndSaveTranslations 662 662 #if ($action == 'save') 663 663 #if ($errorMessage) 664 - <div class="boxerrormessage">$errorMessage</div>669 + #error($errorMessage) 665 665 #elseif ("$!request.wizard" == 'true') 666 666 ## Redirect to next wizard step. 667 667 #set ($className = $stringtool.removeEnd($doc.fullName, 'Class')) ... ... @@ -672,6 +672,7 @@ 672 672 }) 673 673 #if (!$xwiki.exists($templateProviderReference)) 674 674 #set ($discard = $queryString.putAll({ 680 + 'form_token': $services.csrf.getToken(), 675 675 'template': 'XWiki.TemplateProviderTemplate', 676 676 'parent': $doc.fullName 677 677 }))
- XWiki.JavaScriptExtension[2]
-
- Code
-
... ... @@ -300,8 +300,10 @@ 300 300 var label = previousDT.down('label'); 301 301 prettyNameInput.title = label.textContent || label.innerText; 302 302 } 303 + prettyNameInput.ariaLabel = '$escapetool.javascript($services.localization.render('platform.appwithinminutes.classEditorFieldPrettyNameToolTip'))'; 303 303 // Replace the preview label with the pretty name input. 304 304 var previewLabel = field.getViewer().down('label'); 306 + // We unset the for attribute, so that this label will not be set implicitely OR explicitely anymore. 305 305 previewLabel.writeAttribute('for', ''); 306 306 previewLabel.removeChild(previewLabel.lastChild); 307 307 previewLabel.insert(prettyNameInput); ... ... @@ -326,10 +326,12 @@ 326 326 _enhanceFieldDefaultValue : function(event) { 327 327 var field = event.memo.field; 328 328 var fieldName = field.getName(); 329 - field.getViewer().select('input[type=text]', 'textarea').each(function(input) { 331 + // We select the default field input and update it. 332 + field.getViewer().select('dd :input').each(function(input) { 330 330 if (!input.title && input.name.endsWith('_0_' + fieldName)) { 331 331 input.title = '$escapetool.javascript($services.localization.render('platform.appwithinminutes.classEditorFieldDefaultValueToolTip'))'; 332 332 } 336 + input.ariaLabel = '$escapetool.javascript($services.localization.render('platform.appwithinminutes.classEditorFieldDefaultValueToolTip'))'; 333 333 }); 334 334 }, 335 335 _onSave : function() { ... ... @@ -364,7 +364,8 @@ 364 364 if (hintInput) { 365 365 hintInput.addClassName('xHint'); 366 366 if (!hintInput.title) { 367 - hintInput.title = 'Hint'; 371 + hintInput.title = '$escapetool.javascript($services.localization.render('platform.appwithinminutes.classEditorFieldHintToolTip'))'; 372 + hintInput.ariaLabel = '$escapetool.javascript($services.localization.render('platform.appwithinminutes.classEditorFieldHintToolTip'))'; 368 368 } 369 369 // Move the hint input below the pretty name input, in the field viewer. 370 370 var dd = hintInput.up('dd'); ... ... @@ -515,11 +515,7 @@ 515 515 }(XWiki || {})); 516 516 517 517 (function() { 518 - function init() { 519 - var form = $('inline'); 520 - if (!form) { 521 - return false; 522 - } 523 + function initForm(form) { 523 523 // Let the sheet handle the form submit. The form is submitted by default to the preview action which dispatches the 524 524 // request to the save action if the save button is detected on the request parameters. By submitting to the edit 525 525 // action the edit sheet is evaluated and thus it can handle the save by itself. ... ... @@ -557,9 +557,18 @@ 557 557 // Make the palette and the canvas live. 558 558 new XWiki.FormFieldPalette('palette'); 559 559 new XWiki.FormCanvas('canvas'); 561 + } 560 560 561 - return true; 563 + function init() { 564 + var form = $('inline'); 565 + if (form) { 566 + require(['scriptaculous/dragdrop'], function() { 567 + initForm(form); 568 + }); 569 + } 570 + return form; 562 562 } 572 + 563 563 (XWiki.domIsLoaded && init()) || document.observe('xwiki:dom:loaded', init); 564 564 }).call(); 565 565