* User- and groupmanagement: Check if in use before deletion.
* Removed legacy ifset method and replace with ??
* Removed legacy ifsetvalue method.
+ * Made documentation files markdown.
1.6 - Chizra 2024-02-03
* Better error handling and display while adding / update and delete
** Maybe some message "store"
-* make documentation markdown to be nicer
* change multiple-attachment to a field which tells it is used for a image gallery
* i18n support
* Export of an entry, collection or everything. Stored on disk.
--- /dev/null
+Small API to get information and add entries.
+
+# Access
+
+`api.php?QUERY_PARAMETERS`
+
+# Parameters
+
+ID of a collection `collection=NUMBER`
+
+Get the latest 10 for given collection `p=list`
+
+POST call to add a new entry to given collection. `p=add&collection=NUMBER&authKey=API_AUTH_TOKEN`
+See p=addInfo for the details which info is needed in the add call. More information can be found in import.txt
+
+Describes how the data in the POST add call should be formatted. `p=addInfo&collection=NUMBER`
+The JSON info in the data field, tells which fields are available and in which format the value
+is accepted. Expected is a curl call with an array as payload
+
+# Response
+
+The result is json
+```
+{
+ "message": "Message as string",
+ "status": INTEGER based on HTTP_STATUS CODE
+ "data": {}
+}
+```
+++ /dev/null
-Small API to get information and add entries.
-
-# Access
-api.php?QUERY_PARAMETERS
-
-# Parameters
-collection=NUMBER
- ID of a collection
-
-p=list
- Get the latest 10 for given collection
-
-p=add&collection=NUMBER&authKey=API_AUTH_TOKEN
- POST call to add a new entry to given collection.
- See p=addInfo for the details which info is needed in the add call
- More information can be found in import.txt
-
-p=addInfo&collection=NUMBER
- Describes how the data in the POST add call should be formatted.
- The JSON info in the data field, tells which fields are available and in which format the value
- is accepted.
- Expected is a curl call with an array as payload
-
-# Response
-The result is json
-{
- "message": "Message as string",
- "status": INTEGER based on HTTP_STATUS CODE
- "data": {}
-}
--- /dev/null
+# How to make a complete backup
+
+Manually create a complete DB export and all the files in the webfolder.
+
+# Regular backup
+
+Create a full database export and all the files in the `storage` folder of you installation.
+++ /dev/null
-Complete DB export and the files in the webfolder.
--- /dev/null
+# Bulkedit
+
+The bulkedit option allows you to edit all the found entries with the advances search.
+Choose which field should be altered. Options are displayed below the input field.
+Not every type of field has all options. Add does add the input to the existing data.
+Replace does a complete replace of the existing data. Clear removes the existing data regardles of input.
+
+Upload fields are not supported yet.
+++ /dev/null
-With the help if the advanced search found entries can be edited.
-Choose which field should be altered.
-Options are displayed below the input fild.
-Not every type of field has all options.
-Add does add the input to the existing data.
-Replace does a complete replace of the existing data.
-Clear removes the existing data regardles of input.
-
-Upload fields are not supported yet.
--- /dev/null
+# Features
+
++ Self hosted media management. Runs on a raspberry or any webserver (see requirements).
++ Supports multiple collections. Eg. movies, games and music.
++ Each collection has their own fields, which can freely arranged.
++ Multiple user accounts and rights on collection and each entry.
++ Theme support.
++ Search within default field and advanced search in every field.
++ Lightwight.
+++ /dev/null
-Self hosted media management. Runs on a raspberry or any webserver (see requirements).
-Supports multiple collections. Eg. movies, games and music.
-Each collection has their own fields, which can freely arranged.
-Multiple user accounts and rights on collection and each entry.
-Theme support.
-Export and import of everything, collection or only selective entries.
-Search within default field and advanced search in every field.
-Lightwight.
--- /dev/null
+# Fields
+
+Bibliotheca provides a set of fields which can be used to define which data an entry in your collection
+can be saved.
+Those field definitions are stored in the DB itself and can currently only managed there. But only of
+you know how.
+
+Each collection can have there own set of fields. But at least the title field should be available.
+Fields can be managed after a collection has been created.
+
+# Build your oown
+
+If you want to create new ones here is an explanation how they work
+A field is defined in the `sys_fields` table. It needs a `_saveField` and optinal `_loadFieldValue` method
+in `manageentry.class` and the `_loadFieldValue` also in `mancubus.class`
+HTML definitions are needed in `view/UI_THEME/entry` and `view/UI_THEME/manageentry`
+Modification on `advancedsearch.php` if search needs some special treatment for this field.
+
+# Fields in sys_fields table
+
+Have a look into the table. Special ones are described here.
+
+`identifier` Unique string within the how sys_fields table.
+
+`displayname` Text which will be displayed for this field.
+
+`type` Specifies the type which then lets the code "know" what to do with this field.
+Needs a html definition in `view/UI_THEME/entry` and `view/UI_THEME/manageentry`.
+A `_loadFieldValue_TYPE` method in `manageentry.class` and `mancubus.class` if it needs special data process reading
+A `_saveField_TYPE` method in `manageentry.class` for data saving.
+Modification in `advancedsearch.php` if search needs some special treatment for this field
+
+`searchtype` Every field with `entry*` is a simple search field and can be used in global search.
+
++ tag = releation to lookup2entry table
++ entryText = text col in entry table
++ entrySingleText = entry col in entry table. Single value
++ entrySingleNum = entry col in entry table. Number. Single value. Can be searched by with ><
+
+`createstring` The SQL create string which is run as you add it to your collection. Not everyone needs one!
+
+`inputValidation` Defines the additional input validation. Currently only `allowSpace` is available.
+Used for `lookupmultiple` field to allow tags with whitespace in its values.
+
+`value` The value which is displayed as a selection for the user. Needed for a selection type field
+
+`apiinfo` Text description what type of data the api expects if you want to fill this field.
+
+
+# Fieldmigration
+
+Here is an example to migrate a single text field into a lookupmultiple
+```
+INSERT INTO bib_collection_entry2lookup_3 (`fk_field`,`fk_entry`,`value`) SELECT '32',`id`,`artist` FROM `bib_collection_entry_3` WHERE `artist` <> '';
+```
+The 32 is the ID from the target field.
+++ /dev/null
-Bibliotheca provides a set of fields which can be used to define which data an entry in your collection
-can be saved.
-Those field definitions are stored in the DB itself and can currently only managed there. But only of
-you know how.
-
-Each collection can have there own set of fields. But at least the title field should be available.
-Fields can be managed after a collection has been created.
-
-
-# If you want to create new ones here is an explanation how they work
-A field is defined in the sys_fields table. It needs a _saveField and optinal _loadFieldValue method
-in manageentry.class and the _loadFieldValue also in mancubus.class
-HTML definitions are needed in view/UI_THEME/entry and view/UI_THEME/manageentry
-Modification on advancedsearch.php if search needs some special treatment for this field
-
-# Fields on sys_fields table
-Have a look into the table. Special ones are described here.
-
-identifier
-Unique string within the how sys_fields table.
-
-displayname
-Text which will be displayed for this field.
-
-type
-Specifies the type which then lets the code "know" what to do with this field.
-Needs a html definition in view/UI_THEME/entry and view/UI_THEME/manageentry.
-A _loadFieldValue_TYPE method in manageentry.class and mancubus.class if it needs special data process reading
-A _saveField_TYPE method in manageentry.class for data saving.
-Modification on advancedsearch.php if search needs some special treatment for this field
-
-searchtype
-Every field with entry* is a simple search field and can be used in global search.
-- tag = releation to lookup2entry table
-- entryText = text col in entry table
-- entrySingleText = entry col in entry table. Single value
-- entrySingleNum = entry col in entry table. Number. Single value. Can be searched by with ><
-
-createstring
-The SQL create string which is run as you add it to your collection. Not everyone needs one!
-
-inputValidation
-Defines the additional input validation. Currently only allowSpace is available. Used for lookupmultiple field to
-allow tags with whitespace in its values.
-
-value
-The value which is displayed as a selection for the user. Needed for a selection type field
-
-apiinfo
-Text description what type of data the api expects if you want to fill this field.
-
-
-# Fieldmigration
-Here is an example to migrate a single text field into a lookupmultiple
-INSERT INTO bib_collection_entry2lookup_3 (`fk_field`,`fk_entry`,`value`) SELECT '32',`id`,`artist` FROM `bib_collection_entry_3` WHERE `artist` <> '';
-The 32 is the ID from the target field.
--- /dev/null
+# First steps
+
+## Change your password
+
+After your installation and successfull login with the default user change your password.
+This is done in the manage -> profile screen.
+
+## Create your own user
+
+There is no need to use the admin account for your daily doings.
+To create a new user go to the manage -> user screen and fill the form.
+More information about users and rights can be found in usermanagement-and-rights.md
+
+## Create your first collection
+
+Choose manage -> collections to add your new collection. First make sure to fill the required fields
+and save it. Adding fields and choosing default fields will only work after the creation of collection.
+
+## Add fields to your collection
+
+Choose manage -> collections and select the newly created collection from the right.
+Click on the list icon (right from the pen icon)
+Choose from the right which fields should be available in your collection by tragging them to the left.
+Make sure that at least title, coverimage and description is available. Those are the basic fields
+which are used to display entries.
+On the left you can change the order of the fields. This order will used in the detail- and editview.
+See fields.txt to read more about the fields and their features.
+After saving you are good to go.
+
+## Add an entry to your collection
+
+Choose manage -> add. You will be presented a collection selection. Choose your newly created collection.
+The following screen should match your selected fields and their order.
+Input the required information and save.
+
+Now you have a working collection and also an entry in it.
+That's it.
+
+Thank you for choosing bibliotheca!
+++ /dev/null
-After your installation and successfull login with the default user change your password.
-This is done in the manage -> profile screen.
-
-Create your own user
-There is no need to use the admin account for your daily doings.
-To create a new user go to the manage -> user screen and fill the form.
-More information about users and rights can be found in usermanagement-and-rights.txt
-
-Create your first collection
-Choose manage -> collections to add your new collection. First make sure to fill the required fields
-and save it. Adding fields and choosing default fields will only work after the creation of collection.
-
-Add fields to your collection
-Choose manage -> collections and select the newly created collection from the right.
-Click on the list icon (right from the pen icon)
-Choose from the right which fields should be available in your collection by tragging them to the left.
-Make sure that at least title, coverimage and description is available. Those are the basic fields
-which are used to display entries.
-On the left you can change the order of the fields. This order will used in the detail- and editview.
-See fields.txt to read more about the fields and their features.
-After saving you are good to go.
-
-Add an entry to your collection
-Choose manage -> add. You will be presented a collection selection. Choose your newly created collection.
-The following screen should match your selected fields and their order.
-Input the required information and save.
-
-Now you have a working collection and also an entry in it.
-That's it.
-
-Thank you for choosing bibliotheca!
--- /dev/null
+# Import
+
+The API provides an import method.
+
+You need the URL to your installation and api file.
+You need the token. Can be created in user management and has a lifespan.
+You need the information which collection to import to and what data can be imported.
+
+A working php example with example data-crow data can be found here:
+```
+http://91.132.146.200:3000/Banana/bibliotheca-tools/src/master/data-crow/run-import-to-bibliotheca.php
+http://91.132.146.200:3000/Banana/bibliotheca-tools/src/master/data-crow/README
+```
+
+Info which data can be imported in example collation #1
+```
+{
+ "message": "API POST and FILES data information for collection: Movies",
+ "status": 200,
+ "data": {
+ "title": {
+ "input": "string 128"
+ },
+ "description": {
+ "input": "string 64"
+ },
+ "content": {
+ "input": "mysql text"
+ },
+ "rating": {
+ "input": "One of 0/10,2/10,3/10,4/10,5/10,6/10,7/10,8/10,9/10,10/10"
+ },
+ "actors": {
+ "input": "string 64"
+ },
+ "directors": {
+ "input": "string 64"
+ },
+ "genres": {
+ "input": "string 64"
+ },
+ "runtime": {
+ "input": "string 128"
+ },
+ "countries": {
+ "input": "string 64"
+ },
+ "languages": {
+ "input": "string 64"
+ },
+ "year": {
+ "input": "mysql year"
+ },
+ "imdbrating": {
+ "input": "string 128"
+ },
+ "viewcount": {
+ "input": "string 128"
+ },
+ "storage": {
+ "input": "string 64"
+ },
+ "tag": {
+ "input": "string 64"
+ },
+ "category": {
+ "input": "string 64"
+ },
+ "coverimage": {
+ "input": "One file in $_FILES[uploads] of post"
+ },
+ "attachment": {
+ "input": "Multiple in $_FILES[uploads] of post"
+ }
+ }
+}
+```
+
+Array structure to be send as POST with curl to: `api.php?&authKey=API_TOKEN&collection=COLLECTION_ID`
+
+```
+array(15) {
+ ["actors"]=> string(52) "Amber Heard,Gary Oldman,Harrison Ford,Liam Hemsworth"
+ ["countries"]=> string(20) "France,United States"
+ ["content"]=> string(628) "The high stakes thriller Paranoia takes us deep behind the scenes of global success to a deadly world of greed and deception. The two most powerful tech billionaires in the world (Harrison Ford and Gary Oldman) are bitter rivals with a complicated past who will stop at nothing to destroy each other. A young superstar (Liam Hemsworth), seduced by unlimited wealth and power falls between them, and becomes trapped in the middle of the twists and turns of their life-and-death game of corporate espionage. By the time he realizes his life is in danger, he is in far too deep and knows far too much for them to let him walk away." ["description"]=> string(125) "The high stakes thriller Paranoia takes us deep behind the scenes of global success to a deadly world of greed and deception."
+ ["directors"]=> string(14) "Robert Luketic"
+ ["genres"]=> string(14) "Drama,Thriller"
+ ["title"]=> string(8) "Paranoia"
+ ["languages"]=> string(7) "English"
+ ["coverimage"]=> object(CURLFile)#356 (3) { ["name"]=> string(87) "import/movie/movies-export_images/00330b7f-5df8-49fa-ad79-2d1eb8ebb38c_PictureFront.jpg" ["mime"]=> string(0) "" ["postname"]=> string(0) "" }
+ ["rating"]=> string(4) "6/10"
+ ["runtime"]=> string(0) ""
+ ["tag"]=> string(9) "Storage B"
+ ["year"]=> string(4) "2013"
+ ["attachment[0]"]=> object(CURLFile)#343 (3) { ["name"]=> string(87) "import/movie/movies-export_images/0efb720d-d9e5-406b-aa42-e356f9c544e9_PictureFront.jpg" ["mime"]=> string(0) "" ["postname"]=> string(0) "" }
+ ["attachment[1]"]=> object(CURLFile)#342 (3) { ["name"]=> string(87) "import/movie/movies-export_images/3edf49eb-0270-456d-a15d-e5ddcba302ed_PictureFront.jpg" ["mime"]=> string(0) "" ["postname"]=> string(0) "" }
+}
+```
+++ /dev/null
-The API provides an import method.
-
-You need the URL to your installation and api file.
-You need the token. Can be created in user management and has a lifespan.
-You need the information which collection to import to and what data can be imported.
-
-A working php example with example data-crow data can be found here:
-http://91.132.146.200:3000/Banana/bibliotheca-tools/src/master/data-crow/run-import-to-bibliotheca.php
-http://91.132.146.200:3000/Banana/bibliotheca-tools/src/master/data-crow/README
-
-Info which data can be imported in example collation #1
-
-{
- "message": "API POST and FILES data information for collection: Movies",
- "status": 200,
- "data": {
- "title": {
- "input": "string 128"
- },
- "description": {
- "input": "string 64"
- },
- "content": {
- "input": "mysql text"
- },
- "rating": {
- "input": "One of 0/10,2/10,3/10,4/10,5/10,6/10,7/10,8/10,9/10,10/10"
- },
- "actors": {
- "input": "string 64"
- },
- "directors": {
- "input": "string 64"
- },
- "genres": {
- "input": "string 64"
- },
- "runtime": {
- "input": "string 128"
- },
- "countries": {
- "input": "string 64"
- },
- "languages": {
- "input": "string 64"
- },
- "year": {
- "input": "mysql year"
- },
- "imdbrating": {
- "input": "string 128"
- },
- "viewcount": {
- "input": "string 128"
- },
- "storage": {
- "input": "string 64"
- },
- "tag": {
- "input": "string 64"
- },
- "category": {
- "input": "string 64"
- },
- "coverimage": {
- "input": "One file in $_FILES[uploads] of post"
- },
- "attachment": {
- "input": "Multiple in $_FILES[uploads] of post"
- }
- }
-}
-
-Array structure to be send as POST with curl to: api.php?&authKey=API_TOKEN&collection=COLLECTION_ID
-
-array(15) {
- ["actors"]=> string(52) "Amber Heard,Gary Oldman,Harrison Ford,Liam Hemsworth"
- ["countries"]=> string(20) "France,United States"
- ["content"]=> string(628) "The high stakes thriller Paranoia takes us deep behind the scenes of global success to a deadly world of greed and deception. The two most powerful tech billionaires in the world (Harrison Ford and Gary Oldman) are bitter rivals with a complicated past who will stop at nothing to destroy each other. A young superstar (Liam Hemsworth), seduced by unlimited wealth and power falls between them, and becomes trapped in the middle of the twists and turns of their life-and-death game of corporate espionage. By the time he realizes his life is in danger, he is in far too deep and knows far too much for them to let him walk away." ["description"]=> string(125) "The high stakes thriller Paranoia takes us deep behind the scenes of global success to a deadly world of greed and deception."
- ["directors"]=> string(14) "Robert Luketic"
- ["genres"]=> string(14) "Drama,Thriller"
- ["title"]=> string(8) "Paranoia"
- ["languages"]=> string(7) "English"
- ["coverimage"]=> object(CURLFile)#356 (3) { ["name"]=> string(87) "import/movie/movies-export_images/00330b7f-5df8-49fa-ad79-2d1eb8ebb38c_PictureFront.jpg" ["mime"]=> string(0) "" ["postname"]=> string(0) "" }
- ["rating"]=> string(4) "6/10"
- ["runtime"]=> string(0) ""
- ["tag"]=> string(9) "Storage B"
- ["year"]=> string(4) "2013"
- ["attachment[0]"]=> object(CURLFile)#343 (3) { ["name"]=> string(87) "import/movie/movies-export_images/0efb720d-d9e5-406b-aa42-e356f9c544e9_PictureFront.jpg" ["mime"]=> string(0) "" ["postname"]=> string(0) "" }
- ["attachment[1]"]=> object(CURLFile)#342 (3) { ["name"]=> string(87) "import/movie/movies-export_images/3edf49eb-0270-456d-a15d-e5ddcba302ed_PictureFront.jpg" ["mime"]=> string(0) "" ["postname"]=> string(0) "" }
-}
--- /dev/null
+# Requirements
+
+* A Webserver (tested on Apache 2.4)
+* PHP 8+ with mysqli, mbstring, curl
+* MySQL 8+; MariaDB 10.2/MySQL 8
+* * User with full rights on the Database. Including lock tables
+* At least 20MB webserver storage WITHOUT images
+* At least 20MB DB storage.
+++ /dev/null
-* A Webserver (tested on Apache 2.4)
-* PHP 8+ with mysqli, mbstring, curl
-* MySQL 8+; MariaDB 10.2/MySQL 8
--- User with full rights on the Database. Including lock tables
-* At least 20MB webserver storage WITHOUT images
-* At least 20MB DB storage.
--- /dev/null
+# Basic search
+
+It works on the defined default search field for each collection.
+The field will be searched with the mysql full text search.
+
+# Adwanced search
+
+It combines the mysql full text search with some added functionality as described in the advanced search view.
+
+# Search limitations
+
+The search is a mysql full text search.
+This has some limitations. Noticable will be the stopwords. Like searching for "what" will return nothing.
+https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html
+https://dev.mysql.com/doc/refman/8.0/en/fulltext-stopwords.html
+https://dev.mysql.com/doc/refman/8.0/en/fulltext-restrictions.html
+++ /dev/null
-# Basic search
-It works on the defined default search field for each collection.
-The field will be searched with the mysql full text search.
-
-# Adwanced search
-It combines the mysql full text search with some added functionality as described in the
-advanced search view.
-
-# Search limitations
-The search is a mysql full text search.
-This has some limitations. Noticable will be the stopwords. Like searching for "what" will return nothing.
-https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html
-https://dev.mysql.com/doc/refman/8.0/en/fulltext-stopwords.html
-https://dev.mysql.com/doc/refman/8.0/en/fulltext-restrictions.html
--- /dev/null
+# Unpack
+Unpack the archive in a temp folder. Follow the following steps.
+After that you can delete the unpacked files
+
+# DB Setup
+Create a DB and choose a prefix (A _ is added automatically as separation) for your tables.
+Write down those values. You need them later.
+
+# Move files
+Move the content of webclient folder to your webspace.
+
+# File rights
+Make sure that `systemout` folder is read/write accessible for your webserver user. Recursive.
+Make sure that `storage` folder is read/write accessible for your webserver user. Recursive.
+Make sure that `config` folder is read/write accessible for your webserver user.
+Make sure that `setup` folder is read/write accessible for your webserver user. Recursive.
+
+# Setup
+Open your browser and visit your newly created bibliotheca installation setup with `/setup`
+Follow the instructions and remember your settings from step DB setup.
+After completion the setup will delete itself. Remove the `/setup` from the url and you are done.
+
+# Access
+Open your browser and visit your newly created bibliotheca installation.
+Default user `admin` and password: `test`
+
+# First steps
+Login with default admin account and change the password! Create your own user. Create your first collection.
+See more in first-steps.md
+
+# To re-run the setup
+Upload the setup folder again. It deletes itself after a successful setup.
+++ /dev/null
-1. Unpack
-Unpack the archive in a temp folder. Follow the following steps.
-After that you can delete the unpacked files
-
-2. DB Setup
-Create a DB and choose a prefix (A _ is added automatically as separation) for your tables.
-Write down those values. You need them later.
-
-3. Move files
-Move the content of webclient folder to your webspace.
-
-4. File rights
-Make sure that systemout folder is read/write accessible for your webserver user. Recursive.
-Make sure that storage folder is read/write accessible for your webserver user. Recursive.
-Make sure that config folder is read/write accessible for your webserver user.
-Make sure that setup folder is read/write accessible for your webserver user. Recursive.
-
-5. Setup
-Open your browser and visit your newly created bibliotheca installation setup with /setup
-Follow the instructions and remember your settings from step 2.
-After completion the setup will delete itself. Remove the /setup from the url and you are done.
-
-5. Access
-Open your browser and visit your newly created bibliotheca installation.
-Default admin user pw: test
-
-7. First steps
-Login with default admin account and change the password!
-Create your own user.
-Create your first collection.
-
-To re run the setup:
-Upload the setup folder again. It deletes itself after a successful setup.
--- /dev/null
+# Unpack
+Unpack the archive in a temp folder. Follow the steps. After you can delete the unpacked files
+
+# DB Setup
+Create a DB and choose a prefix (A _ is added automatically as separation) for your tables.
+Open the provided sql file. Search for `#REPLACEME#` and replace it with your table prefix.
+Save. Import this file into you newly created DB.
+It is a mysql dump import file. Works with phpmyadmin too.
+
+# Config
+Copy `webclient/config/config.php.default` to `webclient/config/config.php`. Edit and fill in the DB details.
+
+Change `PATH_ABSOLUTE` to you installation path and `PATH_WEB_STORAGE` relative to your webroot.
+
+# Move files
+Move the content of webclient folder to your webspace. Make sure the location matches
+the `PATH_ABSOLUTE` config in `config.php` file
+
+# File rights
+Make sure that `systemout` folder is read/write accessible with your webserver user. Recursive.
+Make sure that `storage` folder is read/write accessible with your webserver user. Recursive.
+
+# Access
+Open your browser and visit your newly created bibliotheca installation.
+Default user `admin` and password: `test`
+
+# First steps
+Login with default admin account and change the password! Create your own user. Create your first collection.
+See more in first-steps.md
+++ /dev/null
-1. Unpack
-Unpack the archive in a temp folder. Follow the steps. After you can delete the
-unpacked files
-
-2. DB Setup
-Create a DB and choose a prefix (A _ is added automatically as separation) for your tables.
-Open the provided sql file. Search for #REPLACEME# and replace it with your table prefix.
-Save. Import this file into you newly created DB.
-It is a mysql dump import file. Works with phpmyadmin too.
-
-3. Config
-Copy webclient/config/config.php.default to webclient/config/config.php
-Edit and fill in the DB details.
-
-Change PATH_ABSOLUTE to you installation path and PATH_WEB_STORAGE relative to your webroot.
-
-Copy config-imdb.php.default to config-imdb.php.
-Read the tools.txt and tool-imdbweb.txt and make wanted changes to that file
-
-4. Move files
-Move the content of webclient folder to your webspace. Make sure the location matches
-the PATH_ABSOLUTE config in config.php file
-
-5. File rights
-Make sure that systemout folder is read/write accessible with your webserver user. Recursive.
-Make sure that storage folder is read/write accessible with your webserver user. Recursive.
-
-6. Access
-Open your browser and visit your newly created bibliotheca installation.
-Default admin user pw: test
-
-7. First steps
-Login with default admin account and change the password!
-Create your own user.
-Create your first collection.
--- /dev/null
+# IMDB web parser tool
+
+It provides easy searching for a movie entry within https://www.imdb.com.
+Creating a new one with the selected fields or updating an existing one.
+
+It uses: https://github.com/FabianBeiner/PHP-IMDB-Grabber with some modifications
+
+You can search for words or the exact imdb id, which is in tt* format of an entry url.
+It searches for movies only.
+
+Which fields are available for you to select, are configured in the config.imdbweb.php file to make it
+easier since not every field the tool provides are needed.
+Follow the comments in the file for more details.
+
+An option to make the target fields automatically selected by default to given values is also available
+in the config file.
+
+# Setup
+
+Rename the `config-imdbweb.php.default` to `config-imdbweb.php` in the config folder.
+Follow the comments to update the settings. Add the tool to your collection.
+++ /dev/null
-IMDB web parser tool
-
-It provides easy searching for a movie entry within https://www.imdb.com.
-Creating a new one with the selected fields or updating an existing one.
-
-It uses: https://github.com/FabianBeiner/PHP-IMDB-Grabber with some modifications
-
-You can search for words or the exact imdb id, which is in tt* format of an entry url.
-It searches for movies only.
-
-Which fields are available for you to select, are configured in the config.imdbweb.php file to make it
-easier since not every field the tool provides are needed.
-Follow the comments in the file for more details.
-
-An option to make the target fields automatically selected by default to given values is also available
-in the config file.
-
-# Setup
-Rename the config-imdbweb.php.default to config-imdbweb.php in the config folder.
-Follow the comments to update the settings.
-Add the tool to your music collection
--- /dev/null
+# Musicbrainz music release information grabber
+
+Based on
+```
+https://musicbrainz.org/doc/Development
+https://musicbrainz.org/doc/MusicBrainz_API/Examples
+https://musicbrainz.org/doc/MusicBrainz_API/Search
+https://musicbrainz.org/doc/MusicBrainz_API
+```
+the grabber provides a simple search for artist and release (album).
+
+# Usage
+
+Creating a new entry with the selected fields or updating an existing one.
+
+An option to make the target fields automatically selected by default to given values is also available
+in the config file.
+
+# Setup
+
+Rename the `config-musicbrainz.php.default` to `config-musicbrainz.php` in the config folder.
+Follow the comments to update the settings. Add the tool to your collection.
+++ /dev/null
-Musicbrainz music release information grabber
-
-Based on
-https://musicbrainz.org/doc/Development
-https://musicbrainz.org/doc/MusicBrainz_API/Examples
-https://musicbrainz.org/doc/MusicBrainz_API/Search
-https://musicbrainz.org/doc/MusicBrainz_API
-the grabber provides a simple search for artist and release (album).
-
-# Usage
-Creating a new entry with the selected fields or updating an existing one.
-
-An option to make the target fields automatically selected by default to given values is also available
-in the config file.
-
-# Setup
-Rename the config-musicbrainz.php.default to config-musicbrainz.php in the config folder.
-Follow the comments to update the settings.
-Add the tool to your music collection
--- /dev/null
+# Tools
+
+Each collection can have additional tools. The availability is configured in collection management.
+
+A tool needs an DB entry in _tool and matching files in `view/THEME/tool/`. Best is to copy an entry
+and change name, description and action. The other settings can be left as they are, unless you know what they do.
+Filenames are `tool-ACTION.html|php`
+A optional configuration file `config/config-ACTION.php`
+A documentation is a must.
+
+As a base the provided imdbweb parse is already included. It makes it possible to search for a movie within
+https://www.imdb.com and let you pick with information should be saved into the entry.
+++ /dev/null
-Each collection can have additional tools. The availability is configured in collection management.
-
-A tool needs an DB entry in _tool and matching files in view/THEME/tool/. Best is to copy an entry
-and change name, description and action. The other settings can be left as they are, unless you know what they do.
-Filenames are tool-ACTION.html|php
-A optional configuration file config/config-ACTION.php
-A documentation is a must.
-
-As a base the provided imdbweb parse is already included. It makes it possible to search for a movie within
-https://www.imdb.com and let you pick with information should be saved into the entry.
--- /dev/null
+# Upgrade
+
+Each release has its own file in the upgrade folder.
+Basic flow would be to extract the new release and copy over the following files and directories:
+
+```
+webclient/config/
+webclient/lib/
+webclient/view/
+webclient/.htaccess
+webclient/api.php
+webclient/index.php
+```
+
+and follow the upgrade file(s). After the first launch, visit `/index.php?p=managesystem` and check if there any
+further changes to be done.
+
+In those files there are the steps needed to make an upgrade. If you upgrade multiple versions make sure to read
+all the files in the correct order. Within the upgrade files itself there is an order. Make sure to follow.
+
+# Why no automatic updates
+
+Doing so, the process serving the application needs write access to the files. Which can be a security risk.
+Providing write access only to storage or temporary files and not the application files itself, it is more
+secure (there is no complete security).
+The downside are manual updates.
+++ /dev/null
-Each release has its own file in the upgrade folder.
-Basic flow would be to extract the new release and copy over the following files and directories:
-
-```
-webclient/config/
-webclient/lib/
-webclient/view/
-webclient/.htaccess
-webclient/api.php
-webclient/index.php
-```
-
-and follow the upgrade file(s). After the first launch, visit `/index.php?p=managesystem` and check if there any
-further changes to be done.
-
-In those files there are the steps needed to make an upgrade. If you upgrade multiple versions make sure to read
-all the files in the correct order. Within the upgrade files itself there is an order. Make sure to follow.
-
-# Why no automatic updates
-Doing so, the process serving the application needs write access to the files. Which can be a security risk.
-Providing write access only to storage or temporary files and not the application files itself, it is more
-secure (there is no complete security).
-The downside are manual updates.
--- /dev/null
+# User and group management
+
+Groups or default users can not be changed.
+
+Default users are and should not be changed or removed:
+
+`admin` : The admin user.
+`anonymoose` : The guest user.
+
+Default user groups are and Should not be changed or removed:
+
+`Administration` : Default admin user group.
+`Users` : Default user group. Should not be changed or removed.
+`Anonymous` : Guest user group. Should not be changed or removed.
+
+
+## Rights
+A user can be in multiple groups.
+A collection has one owner and one group.
+An entry has one owner and group.
+
+The entries will be given the owner if its creator and group of its collection.
+Rights can be modified. (Default are the rights of the collection)
+
+A user can have multiple private collections.
+A user can have multiple private entries within a collection.
+There are no different groups within a collection.
+++ /dev/null
-Groups or default users can not be changed.
-
-Default users are:
-
-admin
-Should not be changed or removed.
-
-anonymoose
-The guest user. Should not be changed or removed.
-
-
-Default user groups are:
-
-Administration
-Default admin user group. Should not be changed or removed.
-
-Users
-Default user group. Should not be changed or removed.
-
-Anonymous
-Guest user group. Should not be changed or removed.
-
-
-## Rights
-A user can be in multiple groups.
-A collection has one owner and one group.
-An entry has one owner and group.
-
-The entries will be given the owner if its creator and group of its collection.
-Rights can be modified. (Default are the rights of the collection)
-
-A user can have multiple private collections.
-A user can have multiple private entries within a collection.
-There are no different groups within a collection.