This release features work that we've been planning for a long time centered around sharing collections of documents in a more granular way.
This is our first release since David Benqué joined our team, so in addition to these team-centric updates we also worked on integrating some UI/UX improvements.
## Update notes
Updating to 3.5.0 from 3.4.0 is simple.
1. stop your server
2. pull the latest code via git
3. run `bower update`
4. restart your server
## Features
* We restyled some elements throughout the platform:
* our tooltips have a sleeker flat design
* the quota bar which appears in the drive, teams, and settings pages has also been improved
* we've begun improving the look and feel of various popup dialogs
* We've added support for password-change for owned uploaded files and owned shared folders:
* changing passwords for encrypted files means that the original file will be removed from the server and a new file will be encrypted with a new key and uploaded to a new location on the server. References to the original file will be broken. This includes links, media-tags embedded within pads, and items in other users' drives or shared folders to which you do not have access.
* the process is very similar for shared folders stored in users' CryptDrives, except that users will have the opportunity to enter the new password when they visit the platform.
* We're very happy to finally introduce the notion of _read-only shared folders_. While we've had the capacity to make shared folders read-only for some time, it was only in the same sense as pads were read-only.
* This is to say that while a viewer cannot modify the document, any links to encrypted documents within that document would confer their natural editing rights to viewers, making it possible to accidentally leak access when a single pad was shared.
* Our new read-only shared folders encrypt the editing keys for the documents they contain, such that only those with the ability to change the folder structure itself have the inherent capacity to edit the documents contained within. We think this is more intuitive than the alternative, but it took a lot of work to make it happen!
* Unfortunately, older shared folders created before this release will already contain the cryptographic keys which confer editing rights. Pads which are added to shared folders from this release onward will have the keys for their editing rights encrypted. We'll offer the ability for owners to migrate these shared folders in an upcoming release once we've added the ability to selectively trim document history.
* Similarly, we've introduced the notion of _viewers_ in teams. Viewers are listed in the team roster and have the ability to view the contents of the team's drive, but not to edit them or add new documents.
* Unfortunately, the notion of viewers is also complicated by the fact that documents added to team drives or shared folders in team drives did not have their editing keys encrypted. The first team member to open the team drive since we've deployed this release will run a migration that will encrypt the keys saved within the team drive, however, the encryption keys will remain in the drive's history until we develop a means of selectively trimming history.
## Bug fixes
* We discovered and fixed some bugs in the serverside code responsible for handling some aspects of file upload related to starting a new upload after having cancelled a previous session.
* We also identified a regression in Our _slides_ app related to the rendering of `<br>` tags, such as you might create with a `****` sequence in the corresponding markdown. This was introduced with some overly broad CSS that was intended to style our notifications page. We've since made the notifications styles more specific such that they can't interfere with other applications.
* We've become aware of some mysterious behaviour in Firefox that seems to cause some tabs or functionality to reconnect to the server after going offline while other aspects of the platform did not. Until now we've always assumed that users were connected or not, and this partial connection has revealed some bugs in our implementation. Consequently, we've begun adding some measures to detect odd behaviour if it occurs. We expect to have determined the cause of this behaviour and to have proposed a solution by our next release.
Cryptpad includes support for building a Docker image and running it to provide a Cryptpad instance. You can manage the container manually, or let Docker Compose manage it for you.
A full tutorial is available [on the Cryptpad Github wiki](https://github.com/xwiki-labs/cryptpad/wiki/Docker-(with-Nginx-and-Traefik)). This document provides a brief overview.
A full tutorial is available [on the Cryptpad Github wiki](https://github.com/xwiki-labs/cryptpad/wiki/Docker). This document provides a brief overview.
"viewOpenTitle":"Obre aquest document en mode només de lectura en una pestanya nova",
"fileShare":"Copia l'enllaç",
"getEmbedCode":"Obté el codi d'incrustat",
"viewEmbedTitle":"Inscrusta el document en una pàgina externa",
"viewEmbedTag":"Per incrustar aquest document, poseu aquest iframe allà on vulgueu de la vostra pàgina. Podeu donar-li l'estil desitjat utilitzant els atributs CSS o HTML.",
"fileEmbedTitle":"Incrusta el fitxer en una pàgina externa",
"fileEmbedScript":"Per incrustar aquest fitxer, poseu aquest script un cop a la vostra pàgina per carregar l'Etiqueta Multimèdia:",
"viewOpenTitle":"Pad schreibgeschützt in neuem Tab öffnen",
"fileShare":"Link kopieren",
"getEmbedCode":"Einbettungscode anzeigen",
"viewEmbedTitle":"Das Pad in eine externe Webseite einbetten",
"viewEmbedTag":"Um dieses Pad einzubetten, platziere diesen iframe an der gewünschten Stelle deiner HTML-Seite. Du kannst es mit CSS oder HTML-Attributen gestalten.",
"fileEmbedTitle":"Die Datei in einer externen Seite einbetten",
"fileEmbedScript":"Um diese Datei einzubetten, füge dieses Skript einmal in deiner Webseite ein, damit das Media-Tag geladen wird:",
@ -955,15 +954,14 @@
"properties_passwordWarning":"Das Passwort wurde erfolgreich geändert, aber dein CryptDrive konnte nicht aktualisiert werden. Du musst möglicherweise die alte Version des Pads manuell entfernen.<br>Klicke auf OK, um die Seite neu zu laden und die Zugriffsrechte zu aktualisieren.",
"properties_passwordSuccess":"Das Passwort wurde erfolgreich geändert.<br>Klicke auf OK, um die Seite neu zu laden und die Zugriffsrechte zu aktualisieren.",
"properties_changePasswordButton":"Absenden",
"share_linkCategory":"Link teilen",
"share_linkCategory":"Link",
"share_linkAccess":"Zugriffsrechte",
"share_linkEdit":"Bearbeiten",
"share_linkView":"Ansehen",
"share_linkOptions":"Linkoptionen",
"share_linkEmbed":"Einbettungsmodus (Werkzeugleiste und Benutzerliste sind verborgen)",
"share_linkPresent":"Anzeigemodus (Bearbeitbare Abschnitte sind verborgen)",
"share_linkOpen":"In einem neuen Tab öffnen",
"share_linkCopy":"In die Zwischenablage kopieren",
"share_linkEmbed":"Einbettungsmodus (Werkzeugleiste und Benutzerliste verbergen)",
"share_linkPresent":"Anzeigemodus",
"share_linkOpen":"Vorschau",
"share_linkCopy":"Kopieren",
"share_embedCategory":"Einbetten",
"share_mediatagCopy":"Media-Tag in die Zwischenablage kopieren",
"loading_pad_1":"Initialisiere Pad",
@ -977,7 +975,7 @@
"sharedFolders_create_name":"Neuer Ordner",
"sharedFolders_create_owned":"Eigener Ordner",
"sharedFolders_create_password":"Ordnerpasswort",
"sharedFolders_share":"Teile dieseURL mit anderen registrierten Benutzern, um ihnen Zugriff auf den geteilten Ordner zu geben. Sobald sie diese URL öffnen, wird der geteilte Ordner zu ihrem CryptDrive hinzugefügt.",
"sharedFolders_share":"Teile diesen Link mit anderen registrierten Benutzern, um ihnen Zugriff auf den geteilten Ordner zu geben. Sobald sie diesen Link öffnen, wird der geteilte Ordner zu ihrem CryptDrive hinzugefügt.",
"chrome68":"Anscheinend benutzt du Chrome oder Chromium in Version 68. Ein darin enthaltener Fehler führt dazu, dass nach ein paar Sekunden die Seite komplett weiß wird oder nicht mehr auf Klicks reagiert. Um das Problem zu beheben, wechsle den Tab und kehre zu CryptPad zurück, oder versuche zu scrollen. Dieser Fehler sollte in der nächsten Version deines Browsers behoben sein.",
"autostore_file":"Diese Datei",
"autostore_sf":"Dieser Ordner",
@ -1242,5 +1240,7 @@
"teams_table_specificHint":"Dies sind ältere geteilte Ordner, wo Benutzer noch Bearbeitungsrechte haben. Für hier erstellte oder hierhin kopierte Pads gelten Standard-Berechtigungen.",
"viewOpenTitle":"Άνοιγμα αυτού του pad μόνο για ανάγνωση σε νέα καρτέλα",
"fileShare":"Αντιγραφή συνδέσμου",
"getEmbedCode":"Κώδικας ενσωμάτωσης",
"viewEmbedTitle":"Ενσωματώστε αυτό το pad σε μία εξωτερική σελίδα",
"viewEmbedTag":"Για να ενσωματώσετε αυτό το pad, συμπεριλάβετε αυτό το iframe στη σελίδα σας, στο σημείο που θέλετε. Μπορείτε να το διαμορφώσετε χρησιμοποιώντας CSS η HTML παραμέτρους.",
"fileEmbedTitle":"Ενσωματώστε το αρχείο σε μια εξωτερική σελίδα",
"fileEmbedScript":"Για να ενσωματώσετε αυτό το αρχείο, συμπεριλάβετε αυτό το script στη σελίδα σας γιανα φορτωθεί το Media Tag:",
"viewOpenTitle":"Ouvrir le lien en lecture seule dans un nouvel onglet",
"fileShare":"Copier le lien",
"getEmbedCode":"Obtenir le code d'intégration",
"viewEmbedTitle":"Intégrer le pad dans une page web",
"viewEmbedTag":"Pour intégrer ce pad, veuillez inclure l'iframe suivant dans votre page là où vous souhaitez l'afficher. Vous pouvez changer sa taille en utilisant du code CSS ou des attributs HTML.",
"fileEmbedTitle":"Intégrer le fichier dans une page web",
"fileEmbedScript":"Pour intégrer un fichier, veuillez inclure le script suivant une fois dans votre page afin de pouvoir charger le Media Tag:",
@ -962,15 +961,14 @@
"properties_passwordWarning":"Le mot de passe a été modifié avec succès mais nous n'avons pas réussi à mettre à jour votre CryptDrive avec les nouvelles informations. Vous devrez peut-être supprimer manuellement l'ancienne version de ce pad.<br>Appuyez sur OK pour recharger le pad et mettre à jour vos droits d'accès.",
"properties_passwordSuccess":"Le mot de passe a été modifié avec succès.<br>Appuyez sur OK pour mettre à jour vos droits d'accès.",
"share_linkEmbed":"Mode intégration (cache la barre d'outils)",
"share_linkPresent":"Présenter",
"share_linkOpen":"Apperçu",
"share_linkCopy":"Copier",
"share_embedCategory":"Intégration",
"share_mediatagCopy":"Copier le mediatag",
"loading_pad_1":"Initialisation du pad",
@ -984,7 +982,7 @@
"sharedFolders_create_name":"Nom du dossier",
"sharedFolders_create_owned":"Être propriétaire du dossier",
"sharedFolders_create_password":"Mot de passe du dossier",
"sharedFolders_share":"Partager cette URL avec d'autres utilisateurs enregistrés leur donne accès au dossier partagé. Une fois l'URL ouverte, le dossier partagé sera ajouté au répertoire racine de leur CryptDrive.",
"sharedFolders_share":"Partager ce lien avec d'autres utilisateurs enregistrés leur donne accès au dossier partagé. Une fois le lien ouvert, le dossier partagé sera ajouté à leur CryptDrive.",
"chrome68":"Il semblerait que vous utilisiez le navigateur Chrome version 68. Ce navigateur contient un bug rendant certaines pages entièrement blanches après quelques secondes ou bloquant les clics. Pour corriger ce problème, vous pouvez vous déplacer vers un nouvel onglet et revenir ou vous pouvez essayer de faire défiler la page. Ce bug devrait être corrigé dans la prochaine version du navigateur.",
"autostore_file":"fichier",
"autostore_sf":"dossier",
@ -1242,5 +1240,7 @@
"teams_table_specificHint":"Dans ces dossiers partagés qui sont d'une version antérieure, les lecteurs peuvent modifier les pads existants. Les pads créés ou copiés dans ces dossiers auront les permissions standard.",
"viewOpenTitle":"Apri questo pad in modalità solo lettura in una nuova finestra",
"fileShare":"Copia il link",
"getEmbedCode":"Mostra il codice per embedding",
"viewEmbedTitle":"Fai l'embed di questo pad in una pagina esterna",
"viewEmbedTag":"Per fare l'embed di questo pad, includi questo iframe nella tua pagina dovunque tu voglia. Puoi modificarne lo stile con gli attributi HTML o CSS.",
"fileEmbedTitle":"Fai l'embed di questo file in una pagina esterna",
"fileEmbedScript":"Per fare l'embed di questo file, includi questo script una volta nella tua pagina per caricare il Media Tag:",
"viewOpenTitle":"Open this pad in read-only mode in a new tab",
"fileShare":"Copy link",
"getEmbedCode":"Get embed code",
"viewEmbedTitle":"Embed the pad in an external page",
"viewEmbedTag":"To embed this pad, include this iframe in your page wherever you want. You can style it using CSS or HTML attributes.",
"fileEmbedTitle":"Embed the file in an external page",
"fileEmbedScript":"To embed this file, include this script once in your page to load the Media Tag:",
@ -980,15 +979,15 @@
"properties_passwordWarning":"The password was successfully changed but we were unable to update your CryptDrive with the new data. You may have to remove the old version of the pad manually.<br>Press OK to reload and update your access rights.",
"properties_passwordSuccess":"The password was successfully changed.<br>Press OK to reload and update your access rights.",
"properties_changePasswordButton":"Submit",
"share_linkCategory":"Share link",
"share_linkCategory":"Link",
"share_linkAccess":"Access rights",
"share_linkEdit":"Edit",
"share_linkView":"View",
"share_linkOptions":"Link options",
"share_linkEmbed":"Embed mode (toolbar and userlist hidden)",
"sharedFolders_share":"Share this URL with other registered users to give them access to the shared folder. Once they open this URL, the shared folder will be added to the root directory of their CryptDrive.",
"sharedFolders_share":"Share this link with other registered users to give them access to the shared folder. Once they open this link, the shared folder will be added to their CryptDrive.",
"convertFolderToSF_SFParent":"This folder cannot be converted to a shared folder in its current location. Move it outside of the containing shared folder to continue.",
"convertFolderToSF_SFChildren":"This folder cannot be converted to a shared folder because it already contains shared folders. Move those Shared folders elsewhere to continue.",
"convertFolderToSF_confirm":"This folder must be converted to a Shared folder for others to view it. Continue?",
@ -1242,5 +1241,6 @@
"teams_table_specificHint":"These are older shared folders where viewers still have permission to edit existing pads. Pads created or copied into these folders will have standard permissions.",
DISCLAIMER: This is a forked Version, i can not find the original Author anymore if anyone knows the original Author please contact me and i can include the Author in the Copyright Notices.
#### License
Licensed under the terms of the MIT License.
#### Installation
If building a new editor using the CKBuilder from http://ckeditor.com/, there is no need to follow numbers steps below. If adding the Word Count & Char Count plugin to an already established CKEditor, follow the numbered steps below.
1. Download the Word Count & Char Count plugin from http://ckeditor.com/addon/wordcount or https://github.com/w8tcha/CKEditor-WordCount-Plugin. This will download a folder named **wordcount_*version*.zip** or **CKEditor-WordCount-Plugin-master.zip** to your Downloads folder.
2. Download the Notification plugin from http://ckeditor.com/addon/notification. This will download a folder named **notification_*version*.zip** to your Downloads folder.
3. Extract the .zip folders for both the Word Count & Char Count and Notification plugin. After extraction, you should have a folder named **wordcount** and a folder named **notification**.
4. Move the wordcount folder to /web/server/root/ckeditor/plugins/. Move the notification folder to /web/server/root/ckeditor/plugins/.
5. Add the following line of text to the config.js file, which is located at /web/server/root/ckeditor/.
```javascript
config.extraPlugins = 'wordcount,notification';
```
Below is an example of what your config.js file might look like after adding config.extraPlugins = 'wordcount,notification';
```javascript
CKEDITOR.editorConfig = function( config ) {
config.extraPlugins = 'wordcount,notification';
config.toolbar [
et cetera . . .
];
};
```
There now should be text in the bottom right-hand corner of your CKEditor which counts the number of Paragraphs and number of Words in your CKEditor.
To modify the behavior of the Word Count & Char Count text at the bottom right-hand corner of your CKEditor, add the following text to your config.js file located at /web/server/root/ckeditor/config.js.
````js
config.wordcount = {
// Whether or not you want to show the Paragraphs Count
showParagraphs: true,
// Whether or not you want to show the Word Count
showWordCount: true,
// Whether or not you want to show the Char Count
showCharCount: false,
// Whether or not you want to count Spaces as Chars
countSpacesAsChars: false,
// Whether or not to include Html chars in the Char Count
countHTML: false,
// Whether or not to include Line Breaks in the Char Count
countLineBreaks: false,
// Maximum allowed Word Count, -1 is default for unlimited
maxWordCount: -1,
// Maximum allowed Char Count, -1 is default for unlimited
maxCharCount: -1,
// Maximum allowed Paragraphs Count, -1 is default for unlimited
maxParagraphs: -1,
// How long to show the 'paste' warning, 0 is default for not auto-closing the notification
pasteWarningDuration: 0,
// Add filter to add or remove element before counting (see CKEDITOR.htmlParser.filter), Default value : null (no filter)
filter: new CKEDITOR.htmlParser.filter({
elements: {
div: function( element ) {
if(element.attributes.class == 'mediaembed') {
return false;
}
}
}
})
};
````
**Note:** If you plan to change some of the JavaScript, you probably will not want to use the CKBuilder, because this will place the JavaScript of the Word Count & Char Count plugin in the ckeditor.js file located at /web/server/root/ckeditor/ckeditor.js. The JavaScript for the Word Count & Char Count plugin in the ckeditor.js file is different than the JavaScript used when manually adding the Word Count & Char Count plugin. When manually adding the Word Count & Char Count plugin, the JavaScript will be in the plugin.js file located at
---
If you want to query the current wordcount you can do it via