Warning: Cannot modify header information - headers already sent by (output started at /var/www/jonas-eriksen.dk/pic/private/index.php:1) in /var/www/jonas-eriksen.dk/pic/private/index.php on line 215
var/www/jonas-eriksen.dk/wiki/lib/plugins/prosemirror/README.md 0000644 00000012201 15233621535 0020362 0 ustar 00 # prosemirror Plugin for DokuWiki
[](https://scrutinizer-ci.com/g/cosmocode/dokuwiki-plugin-prosemirror/?branch=master)
A WYSIWYG editor for DokuWiki
All documentation for this plugin can be found at
https://www.dokuwiki.org/plugin:prosemirror
If you install this plugin manually, make sure it is installed in
``lib/plugins/prosemirror/`` - if the folder is called different it
will not work!
Please refer to http://www.dokuwiki.org/plugins for additional info
on how to install plugins in DokuWiki.
## Development Setup
Use yarn to install the dependecies
yarn
Create a develoment bundle:
yarn dev
Automatically recreate the bundle during development:
yarn watch
Build a release
yarn build
We really recommend yarn, but npm should work, too.
## Architecture
### Dataflow
#### Begin Edit-Session: DokuWiki -> Prosemirror
- `action/editor.php`: `HTML_EDITFORM_OUTPUT` get Instructions and render them to json
- see `renderer.php`
- `renderer.php` uses the classes `NodeStack` `Node` and `Mark` in `schema` to do its job
- this should possibly renamed
- to keep information about a Node in as few places as possible,
some rendering instructions have been moved to the respective `parser/` classes
- Prosemirror parses that json in `script/main.js` according to the schema defined in
`script/schema.js` and creates its `doc`-Node from it.
#### Rendering: Prosemirror -> DokuWiki -> Prosemirror
- Some Nodes (e.g. images, links) need to be resolved by DokuWiki in order to be rendered properly.
- So ProseMirror makes ajax requests
- triggered by `LinkForm.resolveSubmittedLinkData` in `script/LinkForm.js`
- the request is handled by `action/ajax.php` which resolves the link/images and returns
the resolved html to be rendered into Prosemirror
#### Saving/Preview: Prosemirror -> DokuWiki
- Prosemirror synchronizes all changes with the underlying json in the `` field
- When the Editform is submitted that data has to be parsed by DokuWiki into DokuWiki-Syntax.
- This starts in `action/parser.php` during the event `ACTION_ACT_PREPROCESS`
- The main challenge is that Prosemirror operates on a flat array, whereas DokuWiki-Syntax is usually a tree
- This means that the Syntax `**bold __underlined and bold__**` is represented in Prosemirror's data as
`[{text: "bold ", marks: [bold]}, {text: "underlined and bold", marks: [bold, underlined]}]`
- The creation of that syntax tree is started in `parser/SyntaxTreeBuilder.php`
- Handling marks is complex and subtle:
- To know in which order we have to open/close marks we need to know which start
earlier or end later
- for this purpose, `InlineNodeInterface::getStartingNodeMarkScore($markType)`
and `Mark::tailLength` play together
- for `getStartingNodeMarkScore()` to work, it needs the inline nodes inside a block node to be
chained together, so we can ask the previous node whether it has a given node or not
- If the marks on a node have the same start/end than they need a stable order in which they appear.
That is defined in `Mark::markOrder`
### Our Prosemirror JS setup
Currently all our prosemirror scripts are in `script/`.
This definietly needs some better organisation.
I can see the following possible groups:
- NodeViews and Forms
- if a Node cannot be simply rendered and edited by ProseMirror, it needs a NodeView
- Examples are links, images, footnotes(NodeView not yet implemented)
- possibly also `` and ``?
- Menu-Related classes and menu items
- keyboard commands
- possibly `commands` in general wich then can be used by menu-items and keyboard-events?
- the schema
These files are compiled with webpack and transpiled with Babel into `lib/bundle.js`,
which is the file actually included by DokuWiki.
## Testing
The central test-data is the collection of DokuWiki-Syntax and corresponding Prosemirror JSON
in `_test/json/`. This data is used for three sets of tests:
1. Testing the rendering of DokuWiki-Syntax to Prosemirror JSON in `_test/renderer.test.php`
1. Testing the parsing of Prosemirror JSON back to the original DokuWiki-Syntax in `_test/jsonParser.test.php`
1. Testing the validity of the Prosemirror JSON against the schema (`script/schema.js`) in `_jstest/test.js`
The rendering and parsing tests are run as usual DokuWiki tests.
The javascript tests are run with `yarn test`
The scripts in `script/` are also checked when building with eslint.
Eslint can also be run on its own with `yarn eslint`.
## Copyright
Copyright (C) CosmoCode GmbH
Andreas Gohr
Michael Grosse
Anna Dabrowska
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
See the COPYING file in your DokuWiki folder for details
var/www/jonas-eriksen.dk/jresolutions.dk/test/README.md 0000644 00000010547 15233630617 0016735 0 ustar 00
## About Laravel
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
- [Simple, fast routing engine](https://laravel.com/docs/routing).
- [Powerful dependency injection container](https://laravel.com/docs/container).
- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
- [Robust background job processing](https://laravel.com/docs/queues).
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).
Laravel is accessible, powerful, and provides tools required for large, robust applications.
## Learning Laravel
Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 1500 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
## Laravel Sponsors
We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell).
- **[Vehikl](https://vehikl.com/)**
- **[Tighten Co.](https://tighten.co)**
- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
- **[64 Robots](https://64robots.com)**
- **[Cubet Techno Labs](https://cubettech.com)**
- **[Cyber-Duck](https://cyber-duck.co.uk)**
- **[British Software Development](https://www.britishsoftware.co)**
- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)**
- **[DevSquad](https://devsquad.com)**
- [UserInsights](https://userinsights.com)
- [Fragrantica](https://www.fragrantica.com)
- [SOFTonSOFA](https://softonsofa.com/)
- [User10](https://user10.com)
- [Soumettre.fr](https://soumettre.fr/)
- [CodeBrisk](https://codebrisk.com)
- [1Forge](https://1forge.com)
- [TECPRESSO](https://tecpresso.co.jp/)
- [Runtime Converter](http://runtimeconverter.com/)
- [WebL'Agence](https://weblagence.com/)
- [Invoice Ninja](https://www.invoiceninja.com)
- [iMi digital](https://www.imi-digital.de/)
- [Earthlink](https://www.earthlink.ro/)
- [Steadfast Collective](https://steadfastcollective.com/)
- [We Are The Robots Inc.](https://watr.mx/)
- [Understand.io](https://www.understand.io/)
- [Abdel Elrafa](https://abdelelrafa.com)
- [Hyper Host](https://hyper.host)
- [Appoly](https://www.appoly.co.uk)
- [OP.GG](https://op.gg)
## Contributing
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).
## Code of Conduct
In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct).
## Security Vulnerabilities
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed.
## License
The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).