Jump to content
FireWire

Fluency - Integrated DeepL Powered Content Translation

Recommended Posts

Hello community!

I want to share a new module I've been working on that I think could be a big boost for multi-language ProcessWire sites.

Some background, I was looking for a way for our company website to be efficiently translated as working with human translators was pretty laborious and a lack of updating content created a divergence between languages. I, and several other devs here, have talked about translation integrations and have recognized the power that DeepL has. DeepL is an AI deep learning powered service that delivers translation quality beyond any automated service available. After access to the API was opened up to the US, I built Fluency, a DeepL translation integration for ProcessWire.

Fluency brings automated translation to every multi-language field in the admin, and also provides a translation tool allowing the user to translate their text to any language without it being inside a template's field. With Fluency you can:

  • Translate any plain textarea or text input
  • Translate any CKEditor content (yes, with markup)
  • Translate page names for fully localized URLs on every page
  • Translate your in-template translation function wrapped strings
  • Translate modules

DeepL offers translations to the following languages: English (US), English (UK), German, French, Spanish, Portuguese (EU), Portuguese (Brazil, Italian, Dutch, Polish, Russian, Japanese, Chinese (Simplified)

Installation and usage is completely plug and play. Whether you're building a new multi-language site, need to update a site to multi-language, or simply want to stop manually translating a site and make any language a one-click deal, it could not be easier to do it. Fluency works by having you match the languages configured in ProcessWIre to DeepL's. You can have your site translating to any or all of the languages DeepL translates to in minutes (quite literally).

Let's break out the screenshots...
When the default language tab is shown, a message is displayed to let users know that translation is available. Clicking on each tab shows a link that says "Translate from English". Clicking it shows an animated overlay with the word "Translating..." cycling through each language and a light gradient shift. Have a CKEditor field? All good. Fluency will translated it and use DeepL's ability to translate text within HTML tags. CKEditor fields can be translated as easily and accurately as text/textarea fields.

input_fields.thumb.jpg.9337edf798b103053e744fffed460b90.jpg

Repeaters and AJAX created fields also have translation enabled thanks to a JavaScript MutationObserver that searches for multi-language fields and adds translation as they're inserted into the DOM. If there's a multi-language field on the page, it will have translation added.

fluency_repeater.thumb.jpg.879cbf180c7e9714798b736e1db612f4.jpg

Same goes for image description fields. Multi-language SEO friendly images are good to go.

fluently_image_description.thumb.jpg.03269127f3d10f64a9b67d567cbdb765.jpg

Creating a new page from one of your templates? Translate your title, and also translate your page name for native language URLs. (Not available for Russian, Chinese, or Japanese languages due to URL limitations). These can be changed in the "Settings" tab for any page as well so whether you're translating new pages or existing pages, you control the URLs everywhere.

fluency_new_page.thumb.jpg.b3b649fd3087bf2c0cc565c60fed733c.jpg

Language configuration pages are no different. Translate the names of your languages and search for both Site Translation Files (including all of your modules)

fluency_language_page.thumb.jpg.63e41f268eecf2f3f3742325a3fbc5b1.jpg

Translate all of the static text in your templates as well. Notice that the placeholders are retained. DeepL is pretty good at recognizing and keeping non-translatable strings like that. If it is changed, it's easy to fix manually.

fluency_template_translation.thumb.jpg.38093371850fcb9011e9b7d668a79680.jpg

Fluency adds a "Translate" item to the CMS header. When clicked this opens up a modal with a full translation tool that lets the user translate any language to any language. No need to leave the admin if you need to translate content from a secondary language back to the default ProcessWire language. There is also a button to get the current API usage statistics. DeepL account owners can set billing limitations via character count to control costs. This may help larger sites or sites being retrofitted keep an eye on their usage. Fluency can be used by users having roles given the fluency-translate permission.

fluency_translation_tool.thumb.jpg.e69dcca7351659306731f8fffa084a20.jpg

It couldn't be easier to add Fluency to your new or existing website. Simply add your API key and you're shown what languages are currently available for translation from/to as provided by DeepL. This list and all configuration options are taken live from the API so when DeepL releases new languages you can add them to your site without any work. No module updates, just an easy configuration. Just match the language you configured in ProcessWire to the DeepL language you want it to be associated with and you're done. Fluency also allows you to create a list of words/phrases that will not be translated which can prevent items such as brands and company names from being translated when they shouldn't

fluency_config.thumb.jpg.0a0fbd7fcaefd5adda3f59ad850d708f.jpg

 

Limitations:

  • No "translate page" - Translating multiple fields can be done by clicking multiple translation links on multiple fields at once but engineering a "one click page translate" is not feasible from a user experience standpoint. The time it takes to translate one field can be a second or two, but cumulatively that may take much longer (CKEditor fields are slower than plain text fields). There may be a workaround in the future but it isn't currently on the roadmap.
  • No "translate site" - Same thing goes for translating an entire website at once. It would be great, but it would be a very intense process and take a very (very) long time. There may be a workaround in the future but it isn't on the roadmap.
  • No current support for Inline CKEditor fields - Handling for CKEditor on-demand hasn't been implemented yet, this is planned for a future release though and can be done. I just forgot about it because I've never really used that feature personally..
  • Alpha release - This module is in alpha. Releases should be stable and usable, but there may be edge case issues. Test the module thoroughly and please report any bugs via a Gitlab issue on the repository or respond here.

Please note that the browser plugin for Grammarly conflicts with Fluency (as it does with many web applications). To address this issue it is recommended that you disable Grammarly when using Fluency, or open the admin to edit pages in a private window where Grammarly may not be loaded. This is an issue that may not have a resolution as creating a workaround may not be possible. If you have insight as to how this may be solved please visit the Gitlab page and file a bugfix ticket.

Requirements:

  • ProcessWire  3.0+
  • UIKit Admin Theme

That's Fluency in a nutshell. A core effort in this module is to create it so that there is nothing DeepL related hard-coded in that would require updating it when DeepL offers new languages. I would like this to be a future-friendly module that doesn't require developer work to keep it up-to-date.

It's Free
This is my first real module and I want to give it back to the community as thanks. This is the best CMS I've worked with (thank you Ryan & contributors) and a great community (thank you dear reader). The only cost to use this is a subscription fee for the DeepL Pro API. Find out more and sign up here.

Download & Feedback
Download the latest version here
https://github.com/SkyLundy/Fluency-Translation/archive/main.zip

Github repository:
https://github.com/SkyLundy/Fluency-Translation

File issues and feature requests here (your feedback and testing is greatly appreciated):
https://github.com/SkyLundy/Fluency-Translation/issues

 

Thank you! ¡Gracias! Ich danke Ihnen! Merci! Obrigado! Grazie! Dank u wel! Dziękuję! Спасибо! ありがとうございます! 谢谢你!

fluency_results.jpg

  • Like 24
  • Thanks 11

Share this post


Link to post
Share on other sites

This looks amazing. Thanks for your hard work and generosity. 

  • Like 1

Share this post


Link to post
Share on other sites

This looks amazing!! Thank you for your hard work and generosity! Super contribution to ProcessWire!

  • Like 1

Share this post


Link to post
Share on other sites
9 hours ago, bartelsmedia said:

Dreams come true! You should put up a donation link.

There's a link for that in the module config page. Was hidden in the screenshot for simplicity.

  • Like 1

Share this post


Link to post
Share on other sites

For one of the latest website I did, the client asked if there could be an integration of some sort with DeepL since they were using it for translation. And now your amazing contribution is out ! It looks great and I might use it for the next project with this client next year.

Thank you !

  • Like 1

Share this post


Link to post
Share on other sites
2 hours ago, monollonom said:

For one of the latest website I did, the client asked if there could be an integration of some sort with DeepL since they were using it for translation. And now your amazing contribution is out ! It looks great and I might use it for the next project with this client next year.

Thank you !

That's excellent to hear! Glad it came in time. I'm going to be launching a site that uses it in the next few weeks as it is stable and useful right now. It should have more features and time in production by the time you use it! If you get any time to play around with it or use it in the meantime I would love to hear feedback and any bugs you find. Cheers!

  • Like 1

Share this post


Link to post
Share on other sites

I'm continuing work on this module as it gets more time in use and any edge case issues pop up. I'm going to be working on fast iterations while in alpha to address problems quickly so the module can get to a formal release. If you download and test/use the module please submit any issues via the Gitlab repo so it's on my radar. Be sure to check for newer versions on the master branch to get the latest stable version. The next push to master will contain a changelog so early users can track changes and decide if a module upgrade is needed. Thanks again to those who are able to help!

Here's the link to the repo: https://gitlab.com/SkyLundy/fluency-processwire

 

  • Like 1

Share this post


Link to post
Share on other sites

0.2.0 is now working fine. Thank you so much. One cosmetic/minor suggestion: Could you move the "translate" link from underneath the content box to above the box? It would dramatically help to minimize scrolling back and forth:

move.thumb.png.7e2a67eed151365794a9f3a693cf8721.png

Share this post


Link to post
Share on other sites

It is easy to translate from the default language to other languages but it doesn't seem to be possible to start with a secondary language and translate that into the primary language. Or am I wrong?

 

Share this post


Link to post
Share on other sites
2 minutes ago, bartelsmedia said:

It is easy to translate from the default language to other languages but it doesn't seem to be possible to start with a secondary language and translate that into the primary language. Or am I wrong?

 

Yes, that is a limitation in the on-page UI. Initial goal is to keep it simple for the user to translate from the primary language with a one click operation rather than needing a select input to choose the source language.

I prioritized the translation tool in the menu at the top is to translate content from any language to any language just in case that becomes something that is needed. That was the goal of making the link a modal so that tool can be used anywhere there has to be content translated from any language to any language without leaving the page or tab-hopping.

 

17 minutes ago, bartelsmedia said:

0.2.0 is now working fine. Thank you so much. One cosmetic/minor suggestion: Could you move the "translate" link from underneath the content box to above the box? It would dramatically help to minimize scrolling back and forth:

move.thumb.png.7e2a67eed151365794a9f3a693cf8721.png

I had the same thought but was concerned about having it stack up against the language tabs if there were too many of them or if the screen was smaller (like in the screenshots in the original post). I could try experimenting with the translation trigger placement in the future but it would be sometime after localizing the UI so more people can use the module.

Share this post


Link to post
Share on other sites

Can you hack into the Processwire language tabs and add a drop-down "Translate from language..."?! This would probably be the most flexible UI option.

Share this post


Link to post
Share on other sites
7 minutes ago, bartelsmedia said:

Can you hack into the Processwire language tabs and add a drop-down "Translate from language..."?! This would probably be the most flexible UI option.

Everything is hackable...

That would interfere with ProcessWire's existing UI where clicking on a tab that is already selected changes all of the tabs on the page to that language. I don't want the module to alter the native PW interface and take away a feature.

I may revisit the idea of translating a field to all languages at once and test it out to see if it is feasible in practice. If I can do that while being able to provide a progress bar or something then I think that would be the way to go. That would take care of the amount of work of clicking for each language, save space, reduce scrolling, etc.

Share this post


Link to post
Share on other sites

giphy.gif 

Thanks you guy for this module!

If you are willing to accept pull-requests, I will send one which give ability to translate a file (eg: docx) into a CKEditor field and another one which will support my incoming field/module EditorJS.

 

And some suggestions.

About the issue #2 (formality param), as you can know which language is or not supported, you could hardcode the six unsupported languages only.

Quote

If I can do that while being able to provide a progress bar or something then I think that would be the way to go. 

Exactly what I was going to suggest (#15). We are lazy here 😂

  • Like 1

Share this post


Link to post
Share on other sites
17 hours ago, flydev 👊🏻 said:

giphy.gif 

Thanks you guy for this module!

If you are willing to accept pull-requests, I will send one which give ability to translate a file (eg: docx) into a CKEditor field and another one which will support my incoming field/module EditorJS.

 

And some suggestions.

About the issue #2 (formality param), as you can know which language is or not supported, you could hardcode the six unsupported languages only.

Exactly what I was going to suggest (#15). We are lazy here 😂

Just doing it for the love of the code.

Really striving not to "lock in" hard definitions into the code like formality. A workaround I am thinking about is adding an ability for a developer to configure language/formality association with directions for them to review the API as a step to make it work. Believe it or not, I sent a request to DeepL to see if they have a way to query formality that isn't documented 

The module is essentially a DeepL API wrapper with a lot of the work being handled by the front-end JS. The module itself is going to go through some evolution before I can push it out for collaboration. I'll add a module method to work with files. I still need to firm up the structure of the data returned from the module's methods and then document it. It would be awesome to see this integrated in with your EditorJS module which looks super awesome!

I've got a separate repository for a CKEditor integration that I could use a help with. I set that up over the weekend but haven't really touched it. Just did some skeleton code to add the ability to highlight text and exclude it from translation but it's not even close to useful. PM me and let me know what you think.

Share this post


Link to post
Share on other sites

We were on the verge of developing such a module ourselves, but you have beaten us to it ... Thank you very much for this great work!

Unfortunately we have a problem with the integration of the translation service into text fields, because our default language is set to german, as also set in Fluency module settings. But in text fields, we can only translate englisch texts from english, instead from german. Have we done something wrong?

 

Thank you in advance,

Thomas.

settings.png

text_field.png

  • Like 1

Share this post


Link to post
Share on other sites
10 hours ago, xportde said:

We were on the verge of developing such a module ourselves, but you have beaten us to it ... Thank you very much for this great work!

Unfortunately we have a problem with the integration of the translation service into text fields, because our default language is set to german, as also set in Fluency module settings. But in text fields, we can only translate englisch texts from english, instead from german. Have we done something wrong?

 

Thank you in advance,

Thomas.

settings.png

text_field.png

Unfortunately I haven't localized the UI yet but that is the next priority item on my list. If you have your primary language set as German and the other language as English, the translation link will still say "Translate from English" but it will still translate from German to English. Right now this issue is purely aesthetic. Here's the language translating from German to English but the translate link saying the wrong text.

868413029_Screenshotfrom2020-11-1109-35-00.png.311e4b7a9ca2e4558d012ab18b451e60.png

If you would like to change these now so you don't have to wait for a module upgrade, you can update the text strings located on the following lines in these JS files:

Fluency/src/js/fluency.js
153
160
216
473
476
490

Fluency/src/js/fluency_language_translator.js
108
168

By changing the text there the module will then fit your setup. Like I mentioned above, I'm working on having this behave correctly out of the box!

Share this post


Link to post
Share on other sites

Just found out from a user that the browser plugin for Grammarly conflicts with Fluency and causes errors which prevent translations from working. Grammarly is known to cause issues with some web apps and the company seems to not be interested in working on compatibility (as an example, Grammarly has ignored requests to fix conflicts with WordPress' Gutenberg interface for years). Considering how prevalent these issues are with many sites, this isn't a priority for the module's development. Just a heads up in case this becomes an issue for you or your clients. If you have any insight on this that could help solve the issue please open a ticket on the Fluency Gitlab repo.

Share this post


Link to post
Share on other sites

Thank you for the clarification! 

 

In fact, the translations service works as expected, and the hint text is only a cosmetic issue. 

We have unfortunately discovered another problem with CKEditor fields in inline mode, where the translation is not transfered into the target field. Knowing this, we may use the regular mode for CKEditor. Maybe, it's very tricky to implement the translation service here, because the inline editor is loaded dynamically on demand.

 

Best regards,

Thomas.

Share this post


Link to post
Share on other sites

Currently, it seems that only superuser can use the translation service.  Is it possible to enable translations by permission and role? 

Share this post


Link to post
Share on other sites
9 hours ago, xportde said:

Thank you for the clarification! 

 

In fact, the translations service works as expected, and the hint text is only a cosmetic issue. 

We have unfortunately discovered another problem with CKEditor fields in inline mode, where the translation is not transfered into the target field. Knowing this, we may use the regular mode for CKEditor. Maybe, it's very tricky to implement the translation service here, because the inline editor is loaded dynamically on demand.

 

Best regards,

Thomas.

Oh I have never really used CKEditor fields in anything other than regular mode. I will update the description of the module with that information and add that to the roadmap.

9 hours ago, xportde said:

Currently, it seems that only superuser can use the translation service.  Is it possible to enable translations by permission and role? 

I added a permission to the implementation at the company I work for. I will add that to this module as well. Update should be pushed soon and I'll let you know when that is available

 

 

Share this post


Link to post
Share on other sites
11 hours ago, xportde said:

Currently, it seems that only superuser can use the translation service.  Is it possible to enable translations by permission and role? 

This has been fixed, the translation tool can be accessed by anyone with page-edit permissions, which was the original intent of the module.

Out of curiosity- do you see a need to break down access to the translator tool to a specific permission? I'm curious about that idea but didn't think there was a use case.

New version is 0.2.2 - quick link to download the latest: https://gitlab.com/SkyLundy/fluency-processwire/-/archive/master/fluency-processwire-master.zip

Share this post


Link to post
Share on other sites

@FireWire - just installed and on going to the Translation page, I get these errors:

PHP Warning: file_get_contents(/site/modules/Fluency/fluency_templates/el_h1.tpl.html): failed to open stream: No such file or directory in .../Fluency/classes/FluencyTools.class.php:31
PHP Warning: file_get_contents(/site/modules/Fluency/fluency_templates/el_p.tpl.html): failed to open stream: No such file or directory in .../Fluency/classes/FluencyTools.class.php:31

I installed via the URL to the zip file and the problem is that it resulted in two "Fluency" directories such that the path is actually:

/var/www/dev.grief.coach/site/modules/Fluency/Fluency/fluency_templates/el_p.tpl.html

Once I moved those files and did a modules > refresh it started working as expected.

  • Thanks 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Robin S
      This module is sort of an upgrade to my earlier ImageToMarkdown module, and might be useful to anyone working with Markdown in ProcessWire.
      Copy Markdown
      Adds icons to images and files that allow you to copy a Markdown string to the clipboard. When you click the icon a message at the top left of the screen notifies you that the copying has occurred.
      Screencast

      Note: in the screencast an EasyMDE inputfield is used to preview the Markdown. It's not required to use EasyMDE - an ordinary textarea field could be used.
      Usage: Images
      When you hover on an item in an Images field an asterisk icon appears on the thumbnail. Click the icon to copy an image Markdown string to clipboard. If the "Description" field is populated it is used as the alt text.
      You can also open the "Variations" modal for an image and click the asterisk icon to copy an image Markdown string for an individual variation.
      Usage: Files
      When you hover on an item in a Files field an asterisk icon appears next to the filename. Click the icon to copy a link Markdown string to the clipboard. If the "Description" field is populated it is used as the link text, otherwise the filename is used.
       
      https://github.com/Toutouwai/CopyMarkdown
      https://processwire.com/modules/copy-markdown/
    • By Cybermano
      Food Allergens Module
      A simple List of Food Allergens
      My needs were to provide a simple list of food allergens for our clients with restaurant related activity.
      The idea was to simply output the list (to speed up the data entry) without leaving the food menu editing, eg. opening another page in new tab or window.
      This isn't a perfect solution, but it works fine for my needs and I decided to share the base idea.
      This could also be easily used to show little notes or short "vademecum", not only for the list of food allergens.
      ---
      Main features
      The basis
      All moves from a short editing of the module in this tutorial: How to create custom admin pages by @bernhard
      First of all it creates an empty admin page, with a dedicated permission to let safe-user to see it (this permission has to be created as a new ones, manually or by the module).
      Once the page is created, I have hooked its behaviour into the ready.php, to show the content (basically a list).
      A step further
      With the tips of  @bernhard, @Soma (and many others), see here , the magic happens. 
      The new page will be shown as a panel, so editors will not abandon their data entry to have a quick view to the list.
      A little further
      Why scroll to the top of the page to click a link?
      The next step was to create a sticky button only in the food menu pages.
      Again with a @bernhard tip I moved into the customization of this simple module and the related hook.
      ---
      How to use this module
      After installed, it creates the page /admin/page/allergens/ and the module is to be setted up. The first field is a CKEditor with multi-language. This is the place where to write the informations that will be shown into the page. The next field is a simply text-area where to place a bit of JS that will be appended to the markup of the text (omit the 'script' tags). I also putted a checkbox with a silly statement: this to think at least twice on the safety of the written JS. Now comes the first way to display the link to the page
      Field Note with Link. Enable and save it. The module will display a new row with 4 selects (1 standard and 3 ASM):
      View mode (to show the page as Panel or as Modal PopUp); Templates to select: select one or more and save before proceed, so the  asm-select of the pages will be populated showing all the pages of the selected templates. Pages to select: also here select at least one and save before proceed to populate the asm-select for fields only with the ones that belong to the selected pages. Select the fields where to place the note and save again. That's all: now you will find into the notes of the selected fields the link "See the List of Allergens".
      At the same way, the option for the sticky button, but with a plus
      The field select is obviously unnecessary, but you could play with the last row: the inline styles to fix your sticky button where you like. Here you could set the sticky position of the <div> and the absolute ones of the <a>.

      Video Explanation
      In these screencasts you could see a custom JS that show a "copy" button near a "hanna-code" call.
      This because I've set a specific one for each allergen to show up a tooltip in the front end.

      Registrazione #33.mp4  

      Registrazione #34.mp4 ---
      Last but not the least
      Actually it works fine for my needs, even if it's much improvable: I'm working on the permissions creation, the uninstall section, a separate configs and defaults and how to include the hook into the module leaving free the ready.php. According to a simpler uninstall. Also I would make the link text as a dynamic text field, so it will be more flexible.
      I always learn a lot here, so I would share my code for whom it could be interested.
      I removed the hanna code references, but I provide you the html list of the allergens, English and Italian too, so you can paste them into the "source" of the CKEditor field to have a ready to use module.
      Obviously you are free to modify the code as per your needs.
      Please, keep in mind that I'm not a pro coder and I beg your pardon for my verbosity (speaking and coding). 😉
      I hope be helpful or for inspiration.
      Bye
      ready.phpList-ITA.htmlList-ENG.htmlAllergens.moduleREADME.md
       
    • By joeck
      I am struggling with an issue where my language switcher with flags sometimes doesn't show the flag.
      It works in the default language (german):

      but when the site is in english the german flag is not shown (path to image is not found):

      I don't really understand why it works if the site is shown in german but not in english..
      Code for language switcher:
      // remember what language is set to $savedLanguage = $user->language; $languageImage = $savedLanguage->image->url; echo "<li><a href='#' class='dropdown-toggle' data-toggle='dropdown'><img src='$languageImage' alt='$savedLanguage->title'> <span uk-icon='icon: chevron-down'></span></a>"; echo "<div class='uk-navbar-dropdown'>"; echo " <ul class='uk-nav uk-navbar-dropdown-nav'>"; foreach($languages as $language) { //go through all languages // if user is already viewing the page in this language, skip it if($language->id == $savedLanguage->id) continue; // if this page isn't viewable (active) for the language, display root page $viewable = true; if(!$page->viewable($language)) $viewable = false; // set the user's language, so that the $page->url and any other // fields we access from it will be reflective of the $language $user->language = $language; // output a link to this page in the other language $path = $language->image->url; $pagePath = $page->url; if(!$viewable) $pagePath = $pages->get(1)->url; echo "<li><a class='uk-text-medium' href='$pagePath' alt='$language->title'><img src='$path' alt='$language->title flag'> $language->title</a></li>"; } echo " </ul>"; echo "</div>"; echo "</li>"; // restore the original language setting $user->language = $savedLanguage; Language template:

      image field is configured as automatic (array if multiple)
      in language page (both german and english) only one image is saved
      html output of language switcher dropwon (image couldn't be loaded):

      html output when image can be displayed:

    • By BitPoet
      I've realized that I've been jumping back and forth between the PW API docs and the source code for site modules far too much. The idea to hold all necessary documentation locally in one place has occurred to me before, but getting PHPDocumentor et al set up and running reliably (and producing readable output) as always been too much of a hassle. Today I was asked how I find the right hooks and their arguments, and that inspired me to finally get my backside down on the chair and whip something up, namely the
      Module Api Doc Viewer
      ProcessModuleApiDoc
      It lets you browse the inline documentation and public (optionally also protected) class/method/property information for all modules, core classes and template files in the ProcessWire instance. The documentation is generated on the fly, so you don't have to remember to update your docs whenever you update a module.
      The module is quite fresh, so expect some bugs there. Behind the scenes it uses PHP-Parser together with a custom class that extracts the information I needed, and the core TextformatterMarkdownExtra module for rendering the description part in the phpdoc style comments.
      This is not a replacement / competitor to the API Viewer included in the commercial ProDevTools package. There is quite some information included in the inline documentation that my module can't (and won't) parse, but which makes up parts of the official ProcessWire API docs.
      This, instead, is a kind of Swiss army knife to view PHPDoc style information and get a quick class or function reference.
      If you feel daring and want to give it a spin, or if you just want to read a bit more, visit the module's GitHub repository.
      This is the overview page under "Setup" -> "Module API Docs":

      And this is what the documentation for an individual class looks like:

      The core module documentation can of course be found online, but it didn't make sense not to include them.
      Let me know what you think!

    • By tcnet
      File Manager for ProcessWire is a module to manager files and folders from the CMS backend. It supports creating, deleting, renaming, packing, unpacking, uploading, downloading and editing of files and folders. The integrated code editor ACE supports highlighting of all common programming languages.
      https://github.com/techcnet/ProcessFileManager

      Warning
      This module is probably the most powerful module. You might destroy your processwire installation if you don't exactly know what you doing. Be careful and use it at your own risk!
      ACE code editor
      This module uses ACE code editor available from: https://github.com/ajaxorg/ace

      Dragscroll
      This module uses the JavaScript dragscroll available from: http://github.com/asvd/dragscroll. Dragscroll adds the ability to drag the table horizontally with the mouse pointer.
      PHP File Manager
      This module uses a modified version of PHP File Manager available from: https://github.com/alexantr/filemanager
       
×
×
  • Create New...