{"id":386448,"date":"2026-10-24T16:16:47","date_gmt":"2026-10-24T16:16:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/riict-intranet\/"},"modified":"2026-10-24T16:01:25","modified_gmt":"2026-10-24T16:01:25","slug":"riict-intranet","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/riict-intranet\/","author":23584741,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"4.3","stable_tag":"trunk","tested":"7.1.3","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"RIICT Intranet","header_author":"Reto Ineichen","header_description":"Company intranet with documents, news, departments, access control, a protected file store with versions, file preview, drawings and two-site synchronisation.","assets_banners_color":"","last_updated":"2026-10-24 16:01:25","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/rineichen.ch","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":39,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":{"4.3":"<p>The synchronisation no longer transfers departments and department memberships \u2013 create departments with the same names on both sites.<\/p>","4.1":"<p>Security and compatibility release for the WordPress Plugin Check; preview libraries are now bundled.<\/p>","4.0":"<p>The interface is now translatable (English base, German included). German sites stay German.<\/p>","3.9":"<p>News &amp; reports moves into the RIICT Intranet menu. Adds drawings (draw.io, DWG\/DXF).<\/p>","3.6":"<p>New plugin folder. Deactivate and delete &quot;WP RIICT Intranet&quot; first, then install &quot;RIICT Intranet&quot;. No data is lost.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Dashboard with filters and document cards.","2":"File store with drag-and-drop upload, recycle bin and previous versions.","3":"File preview of a Word document.","4":"Drawing in the draw.io editor.","5":"DWG\/DXF preview with conversion to draw.io.","6":"Frontend admin panel."}},"plugin_section":[],"plugin_tags":[1912,23274,12813,8848,6307],"plugin_category":[],"plugin_contributors":[288274],"plugin_business_model":[],"class_list":["post-386448","plugin","type-plugin","status-publish","hentry","plugin_tags-access-control","plugin_tags-departments","plugin_tags-document-management","plugin_tags-file-manager","plugin_tags-intranet","plugin_contributors-reteliriict","plugin_committers-reteliriict"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/riict-intranet.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>RIICT Intranet turns a WordPress site into a private intranet. Employees publish documents and news, share files by department, fill in forms and work on drawings \u2013 all in the frontend, without access to the WordPress dashboard. Administrators manage everything from a frontend admin panel.<\/p>\n\n<p>The plugin is translation-ready. English is the base language; a complete German translation (de_DE, de_CH, de_AT) is included.<\/p>\n\n<h4>Content and publishing<\/h4>\n\n<ul>\n<li><strong>Documents and news<\/strong> \u2013 two content types with categories, types and an attached file or featured image.<\/li>\n<li><strong>Frontend editor<\/strong> \u2013 create and edit posts in the frontend with a drag-and-drop block editor (headings, text, lists, tables, images, columns, quotes, code). The classic editor is available as an alternative.<\/li>\n<li><strong>Four visibility levels<\/strong> \u2013 public, all employees, one department only, private.<\/li>\n<li><strong>Dashboard<\/strong> \u2013 card view with filters for type, type of post and department.<\/li>\n<\/ul>\n\n<h4>Departments and access<\/h4>\n\n<ul>\n<li><strong>Departments as roles<\/strong> \u2013 each department is an additional user role; users can belong to several departments.<\/li>\n<li><strong>Department pages<\/strong> \u2013 created automatically, with the department's articles, forms and file store.<\/li>\n<li><strong>User pages<\/strong> \u2013 one page per user with profile, own posts and a personal file store.<\/li>\n<li><strong>Site protection<\/strong> \u2013 visitors who are not logged in are redirected to a custom login page. Selected pages can be made public.<\/li>\n<\/ul>\n\n<h4>File store<\/h4>\n\n<ul>\n<li><strong>Virtual file system<\/strong> \u2013 shared folder, one folder per department and a personal folder per user, with unlimited subfolders.<\/li>\n<li><strong>Protected downloads<\/strong> \u2013 files are stored in a folder that is locked with .htaccess and are only delivered after a permission check.<\/li>\n<li><strong>Drag and drop<\/strong> \u2013 drop files or whole folders (including subfolders) onto the browser. Large uploads are split automatically.<\/li>\n<li><strong>Privacy of personal folders<\/strong> \u2013 not even administrators can open personal folders. An emergency takeover is possible; it is time-limited, requires a reason, is logged and the user is notified by e-mail.<\/li>\n<\/ul>\n\n<h4>Previous versions and recycle bin<\/h4>\n\n<ul>\n<li><strong>Daily snapshots<\/strong> \u2013 every night the state of the file store is saved. Unchanged files use hard links and take no extra space.<\/li>\n<li><strong>Recycle bin<\/strong> \u2013 deleted files and folders can be restored.<\/li>\n<li>Retention is configurable from 1 to 14 days. Users restore files themselves; nothing is ever overwritten.<\/li>\n<\/ul>\n\n<h4>File preview<\/h4>\n\n<p>Click a file to view it instead of downloading it:<\/p>\n\n<ul>\n<li>Images (JPG, PNG, GIF, WebP, BMP) with arrow-key navigation, PDF, text<\/li>\n<li>Word (DOCX), Excel and spreadsheets (XLSX, XLS, ODS, CSV), PowerPoint (PPTX), OpenDocument text (ODT)<\/li>\n<li>DOC, PPT, ODP and RTF through LibreOffice on the server, if installed (detected automatically). With LibreOffice, all office documents are converted to PDF for the best possible preview.<\/li>\n<\/ul>\n\n<h4>Drawings<\/h4>\n\n<ul>\n<li><strong>draw.io editor<\/strong> \u2013 create new drawings in any folder and edit existing <code>.drawio<\/code> files. They are saved directly in the file store.<\/li>\n<li><strong>DWG and DXF<\/strong> \u2013 preview CAD drawings and convert them to draw.io (layers stay layers, blocks become groups).<\/li>\n<\/ul>\n\n<h4>Forms<\/h4>\n\n<ul>\n<li>Form builder with text, number, e-mail, date, dropdown, single and multiple choice fields.<\/li>\n<li>Forms belong to a department. Results with a CSV export.<\/li>\n<\/ul>\n\n<h4>Synchronisation between two sites<\/h4>\n\n<p>Two intranet installations on different servers can keep their content in sync in both directions: documents, news, form answers, types and the complete file store. Each site only <em>pulls<\/em> content from the other; all requests are signed with a shared key (HMAC-SHA256). The partner site cannot perform administrative actions: user accounts, roles, departments and department memberships are never transferred and are managed on each site itself. Authors are matched by e-mail address.<\/p>\n\n<h4>Shortcodes<\/h4>\n\n<ul>\n<li><code>[intranet_dokumente]<\/code> \u2013 dashboard. Attributes: <code>typ<\/code>, <code>art<\/code>, <code>abt<\/code>, <code>kategorie<\/code><\/li>\n<li><code>[riict_form]<\/code> \u2013 create or edit a document; <code>[riict_form type=\"riict_news\"]<\/code> for news<\/li>\n<li><code>[riict_login]<\/code>, <code>[riict_lost_password]<\/code> \u2013 custom login pages<\/li>\n<li><code>[riict_admin]<\/code> \u2013 frontend admin panel (administrators only)<\/li>\n<li><code>[riict_folders]<\/code> \u2013 file store. Attributes: <code>root<\/code>, <code>show_shared<\/code>, <code>show_user<\/code><\/li>\n<li><code>[riict_abteilung_page abt=\"slug\"]<\/code> \u2013 department page<\/li>\n<li><code>[riict_abteilung_submenu]<\/code>, <code>[riict_dept_nav]<\/code> \u2013 department navigation (only departments the user may access)<\/li>\n<li><code>[riict_user_page]<\/code>, <code>[riict_user_page_link]<\/code>, <code>[riict_benutzer_liste]<\/code> \u2013 user pages<\/li>\n<li><code>[riict_survey_list]<\/code>, <code>[riict_survey_builder]<\/code>, <code>[riict_survey_results]<\/code> \u2013 forms<\/li>\n<li><code>[riict_user_info]<\/code>, <code>[riict_filters]<\/code>, <code>[riict_admin_link]<\/code> \u2013 sidebar elements<\/li>\n<\/ul>\n\n<p>Two widgets are included as well: \"Intranet filter\" and \"Intranet user\".<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the following external services. All JavaScript libraries for the file preview are included in the plugin; files are always read from your own server.<\/p>\n\n<h4>draw.io (diagrams.net)<\/h4>\n\n<p>Used for creating and editing drawings. When a user opens or creates a drawing, the draw.io editor is loaded from embed.diagrams.net in an iframe. The diagram is passed to the editor in the browser via postMessage and saved back to your server. The URL can be replaced by a self-hosted draw.io instance in the settings.\nTerms of use: https:\/\/www.drawio.com\/trust\/terms-of-use\/\nPrivacy policy: https:\/\/www.drawio.com\/trust\/<\/p>\n\n<h4>Partner site (optional synchronisation)<\/h4>\n\n<p>Only if synchronisation is enabled by an administrator: the site regularly requests changes from the partner site that the administrator entered (posts, form answers, types, files \u2013 no users, roles or settings). Requests are signed with a shared key. No other third party is involved.<\/p>\n\n<h3>Bundled libraries<\/h3>\n\n<p>The file preview and the DWG import use these open-source libraries. They are included in <code>assets\/vendor\/<\/code> as unminified ES modules, built with esbuild from the original packages:<\/p>\n\n<ul>\n<li><strong>docx-preview<\/strong> 0.4.1 \u2013 Apache License 2.0 \u2013 https:\/\/github.com\/VolodymyrBaydalka\/docxjs<\/li>\n<li><strong>JSZip<\/strong> 3.10.1 \u2013 MIT or GPLv3 \u2013 https:\/\/github.com\/Stuk\/jszip<\/li>\n<li><strong>libredwg-web<\/strong> 0.7.17 (WebAssembly build of GNU LibreDWG) \u2013 GPLv3 \u2013 https:\/\/github.com\/mlightcad\/libredwg-web \u2013 the <code>.wasm<\/code> file and its loader are generated by Emscripten; the C and TypeScript sources are in the linked repository.<\/li>\n<\/ul>\n\n<p>Spreadsheets (XLSX, XLS, ODS, CSV) and presentations (PPTX) are displayed by the plugin's own reader in <code>assets\/js\/office-lite.js<\/code>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>riict-intranet<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the ZIP file under Plugins \u2192 Add New \u2192 Upload Plugin.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to Settings \u2192 Permalinks and click \"Save Changes\" once.<\/li>\n<li>Create pages for the shortcodes you need \u2013 at least a dashboard (<code>[intranet_dokumente]<\/code>), a form page (<code>[riict_form]<\/code>) and a login page (<code>[riict_login]<\/code>). A frontend admin page (<code>[riict_admin]<\/code>) is recommended.<\/li>\n<li>Under RIICT Intranet \u2192 Settings &amp; documentation, assign these pages.<\/li>\n<li>Under RIICT Intranet \u2192 Public pages, mark the login page as public.<\/li>\n<li>Create departments and assign users to them.<\/li>\n<li>Recommended: set up a server cron job that calls <code>wp-cron.php<\/code> every 15 minutes, so that nightly snapshots and synchronisation run reliably.<\/li>\n<\/ol>\n\n<p>On <strong>nginx<\/strong> the .htaccess protection of the file store does not apply. Add this rule to the server configuration:<\/p>\n\n<pre><code>location ~* \/wp-content\/uploads\/riict\/ { deny all; }\n<\/code><\/pre>\n\n<!--section=faq-->\n<dl>\n<dt id=\"who%20can%20see%20what%3F\"><h3>Who can see what?<\/h3><\/dt>\n<dd><p>Every post has one of four visibility levels: public (everyone, also without login), all employees (logged-in users), one department, or private (author only). Department folders are only visible to members of that department. Administrators only see all departments if the option \"Administrators see the file store of all departments\" is enabled.<\/p><\/dd>\n<dt id=\"can%20administrators%20open%20personal%20folders%3F\"><h3>Can administrators open personal folders?<\/h3><\/dt>\n<dd><p>No. In an emergency (an employee leaves, long absence, audit) an administrator can take over access in the frontend admin panel under \"Folders\". The takeover is time-limited, requires a reason, is logged, and the user is informed by e-mail.<\/p><\/dd>\n<dt id=\"how%20do%20i%20restore%20a%20deleted%20file%3F\"><h3>How do I restore a deleted file?<\/h3><\/dt>\n<dd><p>In the file browser, open \"Recycle bin\" or choose a previous state under \"Previous state\" and click \"Restore\". If a file with the same name exists, the restored file is saved under a new name \u2013 nothing is overwritten.<\/p><\/dd>\n<dt id=\"which%20files%20can%20be%20previewed%20without%20libreoffice%3F\"><h3>Which files can be previewed without LibreOffice?<\/h3><\/dt>\n<dd><p>Images, PDF, text, DOCX, XLSX, XLS, ODS, CSV, PPTX and ODT. DOC, PPT, ODP and RTF need LibreOffice on the server. On Debian\/Ubuntu: <code>apt install libreoffice-core libreoffice-writer libreoffice-calc libreoffice-impress<\/code>. The PHP function <code>exec<\/code> must be enabled.<\/p><\/dd>\n<dt id=\"are%20my%20drawings%20sent%20to%20draw.io%3F\"><h3>Are my drawings sent to draw.io?<\/h3><\/dt>\n<dd><p>The editor is loaded from embed.diagrams.net. The drawing is passed to the editor inside the browser and saved back to your own server; it is not stored by draw.io. If you do not want to use the hosted editor, run your own draw.io instance (for example the Docker image <code>jgraph\/drawio<\/code>) and enter its URL in the settings.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20the%20same%20file%20is%20changed%20on%20both%20synchronised%20sites%3F\"><h3>What happens when the same file is changed on both synchronised sites?<\/h3><\/dt>\n<dd><p>The newer version keeps the file name. The other version is kept as <code>name-konflikt-{site}-{date}.ext<\/code>. A change always wins over a deletion, and files deleted on the partner site go to the recycle bin.<\/p><\/dd>\n<dt id=\"can%20i%20upload%20a%20whole%20folder%3F\"><h3>Can I upload a whole folder?<\/h3><\/dt>\n<dd><p>Yes \u2013 drag it onto the file browser or use \"Choose folder\". The folder structure is kept. Uploads are split automatically to respect <code>max_file_uploads<\/code> and <code>post_max_size<\/code>.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20my%20theme%3F\"><h3>Does it work with my theme?<\/h3><\/dt>\n<dd><p>Yes. All CSS classes use the prefix <code>riict-<\/code> and can be overridden in the theme.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.3<\/h4>\n\n<ul>\n<li>All JavaScript and CSS is now loaded with wp_enqueue_script() \/ wp_enqueue_style() from assets\/; texts are passed with wp_add_inline_script().<\/li>\n<li>Synchronisation is limited to content: departments, roles and department memberships are no longer synchronised.<\/li>\n<li>The drag-and-drop editor is integrated as riict_fpb_* (no separate copy of the Frontend Page Builder plugin any more).<\/li>\n<li>Escaping: JSON in attributes, output of the editor content.<\/li>\n<li>Requires WordPress 6.3.<\/li>\n<\/ul>\n\n<h4>4.2<\/h4>\n\n<ul>\n<li>Fix: with classic themes the scripts are printed in place again (as up to 4.0). Since 4.1 they were only printed in the footer \u2013 with themes that do not call wp_footer() the editor, the draw.io editor, drag &amp; drop and the file preview did not work, so posts could not be edited.<\/li>\n<li>Form fields renamed so WordPress no longer reads them as query variables (\"post_type\" in the post form, \"name\" in the draw.io save request and the department\/type forms). Such requests were answered as 404 and could be lost with redirect or caching plugins.<\/li>\n<li>draw.io opens in the language of the site.<\/li>\n<\/ul>\n\n<h4>4.1<\/h4>\n\n<ul>\n<li>Passes the WordPress Plugin Check: escaping, nonces, sanitizing, WP_Filesystem, prepared SQL.<\/li>\n<li>All preview libraries are bundled \u2013 no more JavaScript from CDNs. New built-in reader for XLSX, XLS, ODS, CSV and PPTX.<\/li>\n<li>Uploads use wp_handle_upload(); downloads, previews and snapshots use the WordPress file system API.<\/li>\n<li>The login form uses a nonce.<\/li>\n<li>Inline scripts are printed through WordPress (fixes broken scripts with block themes).<\/li>\n<li>Fix: departments set in the WordPress user profile were reset when saving.<\/li>\n<\/ul>\n\n<h4>4.0<\/h4>\n\n<ul>\n<li>The plugin is now translatable. English is the base language; a German translation (de_DE, de_CH, de_AT and their formal\/informal variants) is included in <code>languages\/<\/code>, together with a <code>.pot<\/code> template for further languages.<\/li>\n<li>German sites keep their German interface automatically.<\/li>\n<\/ul>\n\n<h4>3.9<\/h4>\n\n<ul>\n<li>Backend menu unified: \"News &amp; reports\" is now part of the \"RIICT Intranet\" menu.<\/li>\n<li>New: drawings with draw.io \u2013 create, open and save <code>.drawio<\/code> files in the file store.<\/li>\n<li>New: DWG\/DXF preview with conversion to draw.io.<\/li>\n<\/ul>\n\n<h4>3.8<\/h4>\n\n<ul>\n<li>New: file preview for images, PDF, text, DOCX, XLSX\/XLS\/ODS\/CSV, PPTX and ODT; DOC, PPT, ODP and RTF through LibreOffice.<\/li>\n<\/ul>\n\n<h4>3.7<\/h4>\n\n<ul>\n<li>New: two-way synchronisation between two intranet sites on different servers.<\/li>\n<\/ul>\n\n<h4>3.6<\/h4>\n\n<ul>\n<li>Plugin renamed to \"RIICT Intranet\" (folder <code>riict-intranet<\/code>). All data is kept.<\/li>\n<\/ul>\n\n<h4>3.5<\/h4>\n\n<ul>\n<li>New: nightly snapshots of the file store and a recycle bin, retention 1\u201314 days.<\/li>\n<\/ul>\n\n<h4>3.4<\/h4>\n\n<ul>\n<li>New: drag-and-drop block editor for documents and news in the frontend.<\/li>\n<\/ul>\n\n<h4>3.3<\/h4>\n\n<ul>\n<li>Fix: files could be uploaded to departments the user does not belong to.<\/li>\n<li>Fix: users could assign departments to themselves in their profile.<\/li>\n<li>New: drag-and-drop upload of files and folders.<\/li>\n<li>New: sidebar shows only departments the user may access.<\/li>\n<\/ul>\n\n<p>The complete changelog is in <code>changelog.txt<\/code>.<\/p>","raw_excerpt":"A complete company intranet: documents, news, departments with access control, a protected file store with versions, file preview and drawings.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/386448","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=386448"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/reteliriict"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=386448"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=386448"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=386448"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=386448"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=386448"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=386448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}