Code source wiki de ConfigSheet
Version 1.1 par superadmin le 2022/06/20 08:49
Masquer les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
| |
1.1 | 1 | {{include reference="CKEditor.VelocityMacros" /}} |
| 2 | |||
| 3 | {{velocity}} | ||
| 4 | #if ($xcontext.action == 'edit') | ||
| 5 | {{html clean="false"}} | ||
| 6 | <div class="xform half"> | ||
| 7 | #displayCKEditorConfig($doc 'edit') | ||
| 8 | </div> | ||
| 9 | {{/html}} | ||
| 10 | #end | ||
| 11 | {{/velocity}} | ||
| 12 | |||
| 13 | {{velocity wiki="false"}} | ||
| 14 | #if ($xcontext.action != 'edit') | ||
| 15 | #if ($xcontext.action == 'get') | ||
| 16 | #set ($discard = $response.setContentType('application/javascript')) | ||
| 17 | #end | ||
| 18 | #set ($isTemporaryAttachmentSupported = "$!services.temporaryAttachments" != '') | ||
| 19 | #set ($htmlSyntax = ${services.wysiwyg.HTMLSyntax.toIdString()|'annotatedxhtml/1.0'}) | ||
| 20 | #set ($isHTML5 = !$htmlSyntax.equals('annotatedxhtml/1.0')) | ||
| 21 | ## Verify if the office import feature is supported. | ||
| 22 | ## | ||
| 23 | ## It's not enough to check if the Office server is connected because the 'importOfficeAttachment' API is available | ||
| 24 | ## only since XWiki 9.8 (see XWIKI-14739) while the CKEditor Integration extension can be installed on older versions | ||
| 25 | ## of XWiki where the users won't be able to import office documents from the CKEditor even if the Office server is | ||
| 26 | ## connected. On these older versions the users will have to use the Create Page dialog with the Page from Office | ||
| 27 | ## option. | ||
| 28 | ## | ||
| 29 | ## We check if the 'importOfficeAttachment' API is available by trying to import an attachment that doesn't exist | ||
| 30 | ## using the Office Viewer macro, which should output an error message saying that the attachment doesn't exist. This | ||
| 31 | ## way the Office server is not actually called so there's no risk of slowing down or blocking the CKEditor load (see | ||
| 32 | ## CKEDITOR-294). | ||
| 33 | #set ($missingAttachmentReference = $services.model.resolveAttachment('CKEditor.OfficeImporter@doesNotExist.txt')) | ||
| 34 | #set ($officeServerConnected = $services.officemanager.isConnected()) | ||
| 35 | #if ("$!officeServerConnected" == '') | ||
| 36 | ## Before XWiki 12.3 and 11.10.5 | ||
| 37 | #set ($officeServerConnected = $services.officemanager.serverState == 'Connected') | ||
| 38 | #end | ||
| 39 | #set ($officeImportSupported = $officeServerConnected && | ||
| 40 | "$!services.wysiwyg.importOfficeAttachment($missingAttachmentReference, {'useOfficeViewer': true})" != '') | ||
| 41 | ## Global default configuration that doesn't depend on the edited content and that needs Velocity code for evaluation. | ||
| 42 | ## Static global configuration (that doesn't need Velocity) should be put in config.js . The default instance level | ||
| 43 | ## configuration is in EditSheet. | ||
| 44 | #set ($customConfig = { | ||
| 45 | 'editorplaceholder': $services.localization.render('ckeditor.content.placeholder'), | ||
| 46 | 'htmlSyntax': $htmlSyntax, | ||
| 47 | 'stylesSet': "#if ($isHTML5)html5#{else}html4#end", | ||
| 48 | 'xwiki-office': { | ||
| 49 | 'enabled': $officeImportSupported | ||
| 50 | }, | ||
| 51 | 'xwiki-upload': { | ||
| 52 | 'isTemporaryAttachmentSupported': $isTemporaryAttachmentSupported | ||
| 53 | } | ||
| 54 | }) | ||
| 55 | ## CKEditor uses '-' (dash) as locale separator (between the language code and the country code). | ||
| 56 | #set ($customConfig.language = $xcontext.locale.toString().toLowerCase().replace('_', '-')) | ||
| 57 | #set ($configObj = $doc.getObject('CKEditor.ConfigClass')) | ||
| 58 | #foreach ($propName in $configObj.propertyNames) | ||
| 59 | #if ($propName != 'advanced') | ||
| 60 | #set ($discard = $customConfig.put($propName, $configObj.getValue($propName))) | ||
| 61 | #end | ||
| 62 | #end | ||
| 63 | CKEDITOR.editorConfig = function(config) { | ||
| 64 | CKEDITOR.tools.extend(config, $jsontool.serialize($customConfig), true); | ||
| 65 | $!doc.getValue('advanced') | ||
| 66 | }; | ||
| 67 | #end | ||
| 68 | {{/velocity}} |